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!
