Rimuovi "Scegli un'opzione" sulle varianti di prodotto e seleziona automaticamente

19 nov 2018, 04:10:30
Visualizzazioni: 13.6K
Voti: 2

Ho un menu a discesa specifico sui prodotti variabili nel mio sito WooCommerce che ha sempre solo un'opzione disponibile. Esempio: il cliente sceglie il "tipo" dell'articolo, poi il "colore", e infine il "numero di parte", dove il menu a discesa del "numero di parte" ha sempre solo un'opzione.

Voglio configurare il sito per rimuovere il requisito di scegliere un'opzione dal menu a discesa "numero di parte" e invece selezionare automaticamente l'unica opzione disponibile.

Esiste un modo per farlo? Sembra che WooCommerce abbia bisogno di un'opzione che permetta di selezionare automaticamente un attributo di variazione quando c'è solo un possibile attributo disponibile per la combinazione.

0
Tutte le risposte alla domanda 3
8

Il seguente codice risolve lo scopo:

add_filter('woocommerce_dropdown_variation_attribute_options_args','fun_select_default_option',10,1);
function fun_select_default_option( $args)
{

    if(count($args['options']) > 0) //Controlla il numero di opzioni disponibili nel menu a discesa
        $args['selected'] = $args['options'][0];
    return $args;
}
19 nov 2018 10:07:50
Commenti

Per qualche motivo non ha alcun effetto. L'ho inserito nel file functions.php del mio child theme. Devo modificare qualcosa per puntare al campo dropdown specifico?

wooq123 wooq123
19 nov 2018 10:37:03

controlla il risultato di count($args['options'])

Aparna_29 Aparna_29
19 nov 2018 11:24:28

Ancora non riesco a modificare il comportamento dei dropdown anche quando sperimento con diversi valori per ($args['options']). Continua a richiedere che selezioni manualmente l'opzione disponibile nell'ultimo dropdown. Un altro modo per dirlo è che ho semplicemente bisogno di rimuovere "scegli un'opzione" in tutti i casi e forzare la selezione della prima opzione disponibile.

wooq123 wooq123
19 nov 2018 11:38:12

Qual è il valore che ottieni stampando count($args['options'])?

Aparna_29 Aparna_29
19 nov 2018 11:39:17

Perdonami se non ho capito completamente, ma come posso determinarlo? Intendi che devo verificare il conteggio delle combinazioni di variazione disponibili per un prodotto specifico?

wooq123 wooq123
19 nov 2018 13:36:51

Aggiungi l'istruzione echo count($args['options']); prima di if(count($args['options']) == 1). Stamperà il conteggio delle opzioni disponibili

Aparna_29 Aparna_29
19 nov 2018 13:38:10

@Aparna_29 Grazie per il codice, funziona perfettamente. Lo sto usando per impostare (forzare) la variazione predefinita per tutti i prodotti con multiple variazioni.

Richard Mišenčík Richard Mišenčík
18 gen 2019 11:49:18

Non conoscevo questo hook. Grazie. Ma il codice non funziona in tutti i casi possibili. Ad esempio, se abbiamo due attributi A & B con valori a1, a2, a3 & b1, b2, b3, e non esiste la variazione a1+b1, avremo un ripristino automatico a "Scegli un'opzione". Quindi, dobbiamo verificare se la variazione esiste e, probabilmente, il suo stato di stock.

Kostiantyn Petlia Kostiantyn Petlia
18 ago 2021 18:30:02
Mostra i restanti 3 commenti
0

Fai riferimento alla risposta originale.

Quindi ci sono 2 casi diversi:

1) Rimuovere completamente questa opzione html**:

add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
function filter_dropdown_option_html( $html, $args ) {
    $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Scegli un\'opzione', 'woocommerce' );
    $show_option_none_html = '<option value="">' . esc_html( $show_option_none_text ) . '</option>';

    $html = str_replace($show_option_none_html, '', $html);

    return $html;
}

Il codice va nel file function.php del tuo tema child attivo (o tema attivo). Testato e funzionante.

2) Rimuovere solo il testo "Scegli un'opzione" (avrai un'opzione senza nome):

add_filter( 'woocommerce_dropdown_variation_attribute_options_html', 'filter_dropdown_option_html', 12, 2 );
function filter_dropdown_option_html( $html, $args ) {
    $show_option_none_text = $args['show_option_none'] ? $args['show_option_none'] : __( 'Scegli un\'opzione', 'woocommerce' );
    $show_option_none_text = esc_html( $show_option_none_text );

    $html = str_replace($show_option_none_text, '', $html);

    return $html;
}
23 apr 2019 08:47:49
0

Utilizza il plugin Snippets che può aggiungere snippet al file functions.php senza modificare direttamente i file. Questo codice fa in modo che se il numero di opzioni è 1, mostra quell'unica opzione nel menu a discesa senza però rimuoverla come variabile. Usalo a tuo rischio, sono un web designer non proprio uno sviluppatore.

Il mio caso d'uso potrebbe essere diverso. Ho diverse migliaia di prodotti, con 5 possibili combinazioni diverse. Per mantenere tutti i prodotti uguali (soprattutto quando importo ed esporto) ho 5 menu a discesa per le variabili anche se un prodotto non ha realmente una variazione. Questo funziona quando la pagina si carica, non credo che funzionerebbe in base alla selezione di un attributo precedente.

add_filter('woocommerce_dropdown_variation_attribute_options_args','woo_select_default_option',10,1);

function woo_select_default_option( $args)
{

    if(count($args['options']) == 1) //Assicurati che la variazione del prodotto non sia vuota
        $args['selected'] = $args['options'][0];
    return $args;
}
3 lug 2023 02:29:32