Cum să elimini "Alege o opțiune" pentru variațiile de produse și să selectezi automat

19 nov. 2018, 04:10:30
Vizualizări: 13.6K
Voturi: 2

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ă.

0
Toate răspunsurile la întrebare 3
8

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;
}
19 nov. 2018 10:07:50
Comentarii

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?

wooq123 wooq123
19 nov. 2018 10:37:03

verifică rezultatul count($args['options'])

Aparna_29 Aparna_29
19 nov. 2018 11:24:28

Î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.

wooq123 wooq123
19 nov. 2018 11:38:12

Ce valoare obții la afișarea count($args['options'])?

Aparna_29 Aparna_29
19 nov. 2018 11:39:17

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?

wooq123 wooq123
19 nov. 2018 13:36:51

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 Aparna_29
19 nov. 2018 13:38:10

@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.

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

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.

Kostiantyn Petlia Kostiantyn Petlia
18 aug. 2021 18:30:02
Arată celelalte 3 comentarii
0

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;
}
23 apr. 2019 08:47:49
0

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;
}
3 iul. 2023 02:29:32