Zakup określonej liczby produktów 10, 20, 30 w woocommerce
Ciekawe pytanie padło na grupie woocommerce więc postanowiłem się mu przyjrzeć, tym bardziej, że jakiś rok temu podobną sztuczkę robiłem na sklepie z kiełbasami 🙂
Zadanie jest takie: klient na stronie produktu jak i w koszyku może wybrać jedynie określone ilości produktu. Dla naszego przykładu weźmy 10, 20, 30 sztuk. Sprawa jest dość prosta, użyjemy a właściwie nadpiszemy funkcję woocommerce_quantity_input. Za jednym zamachem załatwimy sprawę na stronie produktu jak i w koszyku. Po prostu zamienimy zwykłego inputa na selecta (pole tekstowe na listę rozwijaną). Funkcję oczywiście umieszczamy na początku pliku functions.php.
function woocommerce_quantity_input($data) { $min = 10; $max = 50; $step = 10; $options = ''; for ( $count = $min; $count <= $max; $count = $count+$step ) { $options .= '<option value="' . $count . '">' . $count . '</option>'; } echo ' <div class="quantity_select"><select name="quantity">' . $options . '</select></div> '; }
I po temacie tak naprawdę to nie ma co wyjaśniać w tym banalnym kodzie. Oczywiście możemy jeszcze rozważyć co się stanie gdy klient ze strony katalogowej kliknie „dodaj do koszyka” (albo mu tą opcję wyłączyć).
Gdyby jednak komuś nie spodobała się lista rozwijana to będzie jeszcze prościej. Wykorzystamy filtr woocommerce_quantity_input_args
add_filter( 'woocommerce_quantity_input_args', 'liczba_produktow', 10, 2 ); function liczba_produktow( $args, $product ) { $args['input_value'] = 10; // Rozpocznij od tej liczby (domyślnie = 1) $args['max_value'] = 60; // Maksymalna liczba (domyślnie brak) $args['min_value'] = 10; // Minimalna liczba (domyślnie 1) $args['step'] = 10; // Wartość skoku (domyślnie 1) return $args; }