Как установить количество товара по умолчанию в Woocommerce?
У меня есть поле, созданное через ACF. Туда выгружается число, которое должно подставляться в поле количества товара и быть как-бы "по умолчанию" для данного товара, но должна сохраниться возможность его редактировать (+/-).
Использую данный код:
add_filter( 'woocommerce_quantity_input_args', 'rb_woocommerce_quantity_changes', 10, 2 );
function rb_woocommerce_quantity_changes( $args, $product ) {
$attribute = get_field('middle_sq');
if( ! is_cart() )
if (($attribute !== "") and ($attribute !== 0)){
$args['input_value'] = $attribute; // Not on cart page, cuz throw critical error
}
// $args['input_value'] = $attribute;
$args['min_value'] = 1;
$args['step'] = 1;
return $args;
}
Он отлично работает если зайти на страницу товара (single-product) и добавить товар в корзину оттуда. Товар добавляться с нужным количеством.
Но проблема в том, что если товар добавляется со страницы архива или из лупа с похожими товарами (под карточкой товара), то в корзину, все равно, добавляется товар с количеством 1.
Как можно это исправить?
Ответы (1 шт):
Проблема в том, что когда Вы находитесь в товаре, то $attribute = get_field('middle_sq'); отрабатывает относительно главного цикла, где есть есть уже айди_товара. Нужно модифицировать хук, чтоб вызывался с айди_товара.
Например, так
add_filter( 'woocommerce_quantity_input_args', 'rb_woocommerce_quantity_changes', 10, 2 );
function rb_woocommerce_quantity_changes( $args, $product ) {
$product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();
$attribute = get_field('middle_sq', $product_id);
if( ! is_cart() )
if (($attribute !== "") and ($attribute !== 0)){
$args['input_value'] = $attribute; // Not on cart page, cuz throw critical error
}
// $args['input_value'] = $attribute;
$args['min_value'] = 1;
$args['step'] = 1;
return $args;
}