Cum să elimini "Alege o opțiune" pentru variațiile de produse și să selectezi automat
Am un câmp dropdown specific pentru produsele variabile pe site-ul meu WooCommerce care are întotdeauna o singură opțiune disponibilă. De exemplu: clientul alege "tipul" produsului, apoi "culoarea", și în final "numărul de parte", unde dropdown-ul pentru "numărul de parte" are întotdeauna doar o singură opțiune.
Doresc să configurez site-ul pentru a elimina cerința de a alege o opțiune din dropdown-ul "număr de parte" și în schimb să selecteze automat singura opțiune disponibilă.
Există vreo metodă pentru a face acest lucru? Se pare că WooCommerce ar avea nevoie de o opțiune care să permită selectarea automată a unui atribut de variație când există doar un singur atribut posibil disponibil pentru combinația respectivă.

Următorul cod rezolvă problema:
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) //Verifică numărul de opțiuni disponibile în meniul derulant
$args['selected'] = $args['options'][0];
return $args;
}

Din anumite motive, asta nu are niciun efect. Am introdus codul în fișierul functions.php al temei mele child. Trebuie să modific ceva pentru a ținti câmpul dropdown specific?

Încă nu reușesc să schimb comportamentul dropdown-urilor, chiar și când experimentez cu diferite valori pentru ($args['options']). Încă mă obligă să selectez manual opțiunea disponibilă în ultimul dropdown. Altfel spus, trebuie pur și simplu să elimin "alege o opțiune" în toate cazurile și să forțez selectarea primei opțiuni disponibile.

Iartă-mă că nu înțeleg complet, dar cum determin asta? Vrei să spun că trebuie să verific numărul de combinații de variații disponibile pentru un anumit produs?

adaugă instrucțiunea echo count($args['options']); înainte de if(count($args['options']) == 1). Aceasta va afișa numărul de opțiuni disponibile

@Aparna_29 Mulțumesc pentru cod, funcționează perfect. Îl folosesc pentru a seta (forța) variația implicită pentru toate produsele cu multiple variații.

Nu știam de acest hook. Mulțumesc. Dar codul nu funcționează în toate cazurile posibile. De exemplu, dacă avem două atribute A & B cu valorile a1, a2, a3 & b1, b2, b3, și nu există variația a1+b1, vom avea resetare automată la "Alege o opțiune". Deci, trebuie să verificăm dacă variația există și, probabil, și starea ei de stoc.

Consultați răspunsul Original.
Deci există 2 cazuri diferite:
1) Eliminarea completă a acestei opțiuni 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'] : __( 'Alege o opțiune', 'woocommerce' );
$show_option_none_html = '<option value="">' . esc_html( $show_option_none_text ) . '</option>';
$html = str_replace($show_option_none_html, '', $html);
return $html;
}
Codul se adaugă în fișierul function.php
al temei active pentru copii (sau a temei active). Testat și funcționează.
2) Eliminarea doar a textului "Select an option" (veți avea o opțiune fără nume):
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'] : __( 'Alege o opțiune', 'woocommerce' );
$show_option_none_text = esc_html( $show_option_none_text );
$html = str_replace($show_option_none_text, '', $html);
return $html;
}

Folosește plugin-ul Snippets care poate adăuga fragmente de cod în fișierul function.php fără a modifica fișierele direct. Acest cod spune că, dacă numărul de opțiuni este 1, afișează acea singură opțiune în meniul derulant, dar fără a o elimina ca variabilă. Folosește la propriul risc, sunt designer web, nu chiar dezvoltator.
Cazul meu poate fi diferit. Am câteva mii de produse, cu 5 combinații posibile diferite. Pentru a păstra toate produsele la fel (mai ales la import și export), am 5 meniuri derulante de variabile, chiar dacă un produs nu are cu adevărat o variație. Acest lucru funcționează când se încarcă pagina, nu cred că ar funcționa pe baza selecției unui atribut anterior.
add_filter('woocommerce_dropdown_variation_attribute_options_args','woo_select_default_option',10,1);
function woo_select_default_option( $args)
{
// Dacă există o singură opțiune, o selectează automat
if(count($args['options']) == 1) //Asigură-te că variația produsului nu este goală
$args['selected'] = $args['options'][0];
return $args;
}
