Для настройки количества вы можете использовать крючок фильтра woocommerce_quantity_input_args
на страницах вашего отдельного продукта.
Для этого хука есть 2 аргумента:
- Возвращенный
$args
аргумент, который обрабатывает:
- «Импульсное значение по умолчанию» с
$args['input_value']
(значение по умолчанию 1
)
- «Максимально допустимое значение» с
$args['max_value']
(значение по умолчанию -1
)
- «Минимально допустимое значение» с
$args['min_value']
(значение по умолчанию 0
)
- «Значение шага по умолчанию» с
$args['step']
(значение по умолчанию 1
)
- «Значение шаблона по умолчанию» с
$args['pattern']
(значение по умолчанию '[0-9]*'
)
- «Значение по умолчанию для режима» с
$args['inputmode']
(значение по умолчанию 'numeric*'
)
- Объект
WC_Product
$product
, позволяющий настраивать таргетинг на определенные продукты.
Но вам нужно также обработать поля количества на странице корзины, где клиент может редактировать количество товара в корзине.
Примечание: Нельзя иметь переменный шаг, поскольку он является постоянным числовым значением.
Определенные конкретные количества по продукту (для простых продуктов) :
Вы можете добавить настраиваемое поле для ваших продуктов, которое будет обрабатывать фиксированное количество (для простых продуктов):
// Adding and displaying additional product quantity custom fields
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' => __("Input quantity", $domain ),
'placeholder' => '',
'description' => __("Input quantity explanation goes here…", $domain ),
'desc_tip' => true,
) );
woocommerce_wp_text_input( array(
'id' => '_step_qty',
'label' => __("Step quantity", $domain ),
'placeholder' => '',
'description' => __("Step quantity explanation goes here…", $domain ),
'desc_tip' => true,
) );
}
// Saving product custom quantity values
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']) );
}
// Set product quantity field by product
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;
}
Код помещается в файл function.php вашей активной дочерней темы (active theme). Проверено и работает.
Обработка шагов
Следующий пример будет начинаться с 100 и с шагом 100:
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'] : 100;
$args['min_value'] = 100;
$args['step'] = 100;
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'] = 100;
return $data;
}
Код помещается в файл function.php вашей активной дочерней темы (active theme). Проверено и работает.