Oggi vediamo una chicca molto particolare, ovvero come cambiare il testo di default usato nel menu a tendina, quando si deve selezionare l’attributo per un prodotto.

La prima cosa da fare è inserire un’opzione nel back-end del sito, in modo che sia facile per il gestore del negozio cambiare il testo a proprio piacimento.

La funzione che dobbiamo andare ad inserire per creare l’opzione con il campo di testo è la seguente.
/**
* Inserisco l'opzione nel back-end del sito
*/
function mm_woo_opzione_testo_custom_select_attributo() {
$id = isset( $_GET['edit'] ) ? absint( $_GET['edit'] ) : 0;
$value = $id ? get_option( 'wc_attribute_mm_woo_'. $id ) : '';
?>
<tr class="form-field">
<th scope="row" valign="top">
<label for="mm_woo_custom_text"><?php _e('Testo select senza opzione', 'granter'); ?></label>
</th>
<td>
<input name="mm_woo_custom_text" id="mm_woo_custom_text" type="text" value="<?php echo esc_attr( $value ); ?>">
<p class="description"><?php _e('Testo custom nella select a tendina per questo attributo nella pagina del prodotto', 'granter'); ?></p>
</td>
</tr>
<?php
}
/**
* Salvo l'opzione nel database
*/
function mm_woo_opzione_testo_custom_select_attributo_save( $id ) {
if ( is_admin() && isset( $_POST['mm_woo_custom_text'] ) ) {
update_option( 'wc_attribute_mm_woo_'. $id, sanitize_text_field( $_POST['mm_woo_custom_text'] ) );
}
}
/**
* Cancello l'opzione dal database se l'attributo viene cancellato
*/
function mm_woo_opzione_testo_custom_select_attributo_delete( $id ) {
delete_option( 'wc_attribute_mm_woo_'. $id );
}
/**
* Cambio del testo nella select dell'attributo di WooCommerce
*
* @see woocommerce/includes/wc-template-functions.php:
*/
function mm_woo_filtro_cambio_testo_dropdown_select_attributi( $array ) {
// Prendo l'attributo
$label_attributo = $array['attribute'];
// Trovo l'ID dell'attributo
$attributo_id = wc_attribute_taxonomy_id_by_name( $array['attribute'] );
if ( empty($attributo_id) ) {
return;
}
$frase_custom = get_option( 'wc_attribute_mm_woo_'. $attributo_id );
if ( ! empty($frase_custom) ) {
$array['show_option_none'] = __( $frase_custom, 'granter' );
}
return $array;
}
/**
* Controlliamo che Woo sia attivato ed inseriamo tutte le funzioni ed azioni
*/
if ( class_exists( 'woocommerce' ) ) {
add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'mm_woo_filtro_cambio_testo_dropdown_select_attributi', 10, 1 );
add_action( 'woocommerce_after_add_attribute_fields', 'mm_woo_opzione_testo_custom_select_attributo' );
add_action( 'woocommerce_after_edit_attribute_fields', 'mm_woo_opzione_testo_custom_select_attributo' );
add_action( 'woocommerce_attribute_added', 'mm_woo_opzione_testo_custom_select_attributo_save' );
add_action( 'woocommerce_attribute_updated', 'mm_woo_opzione_testo_custom_select_attributo_save' );
add_action( 'woocommerce_attribute_deleted', 'mm_woo_opzione_testo_custom_select_attributo_delete' );
}Fatto questo ed impostato il testo per ogni attributo avrete reso migliore all’utente la fruizione del sito, con un testo più comprensibile e meno vago!
Questo il risultato finale!
