Rimuovi "Scegli un'opzione" sulle varianti di prodotto e seleziona automaticamente
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.

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;
}

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?

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.

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?

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

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

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.

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;
}

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;
}
