ОРИГИНАЛЬНЫЙ, ПОЛУРАБОЧИЙ КОД:
add_filter( 'woocommerce_add_to_cart_validation', 'only_four_items_allowed_add_to_cart', 10, 3 );
function only_four_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_count + $quantity;
if ( has_term( ‘category’, 'product_cat’, $product_id ) && ( $cart_count >= 5 || $total_count > 5 ) ) {
$passed = false; // Set to false
$notice = __( "Only 5 category additions allowed per day.", "woocommerce" ); // Notice to display
}
if( ! $passed )
wc_add_notice( $notice, 'error' );
return $passed;
}
Проблема с приведенным выше кодом заключается в том, что я не могу добавить больше элементов 'product_cat' в корзину, когда ОБЩАЯ сумма корзины составляет 5 или больше. Он должен ограничивать меня только тогда, когда общее количество товаров из КАТЕГОРИИ SPECIFI C составляет 5 или более.
Как мне сделать так, чтобы по существу '$ cart_count' было равно только количеству элементов корзины из указанного c 'product_cat'?
I попробовали следующее, добавив новую переменную $ count, подсчитывая каждый элемент корзины из определенной c категории.
add_filter( 'woocommerce_add_to_cart_validation', 'only_four_items_allowed_add_to_cart', 10, 3 );
function only_four_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_count + $quantity;
$count = 0; // Initializing
// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ) {
if( has_term( $term, 'product_cat', $cart_item['product_id'] ) )
$count += $cart_item['quantity'];
}
// Returning category count
return $count;
if ( has_term( ‘category’, 'product_cat', $product_id ) && ( $count >= 5 || $total_count > 5 ) ) {
$passed = false; // Set to false
$notice = __( "Only 5 category additions allowed per day.", "woocommerce" ); // Notice to display
}
if( ! $passed )
wc_add_notice( $notice, 'error' );
return $passed;
}
Я думал, что замена '$ cart_count> = 5' новой переменной ' $ count> = 5 'изменит оператор if, чтобы он работал только тогда, когда элементы корзины из указанной c категории равны + = 5.
Однако этого не происходит, и код работает. вообще не работает сейчас. Я могу добавить бесконечное количество товаров в корзину.
В чем может быть проблема?