Cambiare il testo di default nei menu a tendina degli attributi prodotto in WooCommerce

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!

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *