Задача. Необходимо реализовать возможность установить в Woocommerce минимальное количество товара для заказа с определенным шагом. Т.е. в настройке каждого товара должна быть настройка, с помощью которой можно установить минимально возможное количество товара и шаг добавления.
Например, товар продается в упаковке по 5 штук и когда мы нажимаем увеличить число товаров, то каждый раз добавляется по 5 штук.
Решение 1. Для установки минимально возможного колиства товаров можно добавить следующий Код №1 в functions.php
(работает только для невариативных товаров):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
## Добавление опции установки минимального количества заказа товара с шагом
// Добавление и отображение дополнительных настраиваемых полей количества товаров
add_action( ‘woocommerce_product_options_pricing’, ‘additional_product_pricing_option_fields’, 50 );
function additional_product_pricing_option_fields() {
$domain = “woocommerce”;
global $post;
echo ‘</div><div class=”options_group pricing”>’;
woocommerce_wp_text_input( array(
‘id’ => ‘_input_qty’,
‘label’ => __(“Минимальное количество товара”, $domain ),
‘placeholder’ => ”,
‘description’ => __(“Минимальное количество единиц товара для заказа”, $domain ),
‘desc_tip’ => true,
) );
woocommerce_wp_text_input( array(
‘id’ => ‘_step_qty’,
‘label’ => __(“Шаг”, $domain ),
‘placeholder’ => ”,
‘description’ => __(“Шаг единиц упаковок при заказе”, $domain ),
‘desc_tip’ => true,
) );
}
// Сохранение пользовательских значений количества товара
add_action( ‘woocommerce_admin_process_product_object’, ‘save_product_custom_meta_data’, 100, 1 );
function save_product_custom_meta_data( $product ){
if ( isset( $_POST[‘_input_qty’] ) )
$product–>update_meta_data( ‘_input_qty’, sanitize_text_field($_POST[‘_input_qty’]) );
if ( isset( $_POST[‘_step_qty’] ) )
$product–>update_meta_data( ‘_step_qty’, sanitize_text_field($_POST[‘_step_qty’]) );
}
// Установить поле количества товара по товару
add_filter( ‘woocommerce_quantity_input_args’, ‘custom_quantity_input_args’, 10, 2 );
function custom_quantity_input_args( $args, $product ) {
if( $product–>get_meta(‘_input_qty’) ){
$args[‘input_value’] = is_cart() ? $args[‘input_value’] : $product–>get_meta(‘_input_qty’);
$args[‘min_value’] = $product–>get_meta(‘_input_qty’);
}
if( $product–>get_meta(‘_step_qty’) ){
$args[‘step’] = $product–>get_meta(‘_step_qty’);
}
return $args;
}
|
Решение 2. В замен первого варианта, можно изменить шаг заказа для всех товаров на сайте, в том числе и для вариативных, используя Код №2. Здесь цифра «5» является шагом:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
## Изменить шаг заказа товара для всех товаров
add_filter( ‘woocommerce_quantity_input_args’, ‘custom_quantity_input_args’, 10, 2 );
function custom_quantity_input_args( $args, $product ) {
$args[‘input_value’] = is_cart() ? $args[‘input_value’] : 5;
$args[‘min_value’] = 5;
$args[‘step’] = 5;
return $args;
}
// Для вариативных товаров
add_filter( ‘woocommerce_available_variation’, ‘custom_qty_available_variation_args’, 10, 3 );
function custom_qty_available_variation_args( $data, $product, $variation ) {
$data[‘min_qty’] = 5;
return $data;
}
|