У меня есть функция, которая устанавливает максимальное количество заказов в корзине равным 16. Таким образом, пользователь не может оформить заказ с более чем 16 товарами.
Я также запускаю плагин, который добавляет ключ free_gift
к$cart_item array
при добавлении купона.
Проблема в том, что когда пользователь добавляет 16 элементов + free_gift
= всего 17 элементов, что не позволяет оформить заказ.
Как удалитьfree_gift
от добавления в число элементов корзины?
Пример:
- Сделать так, чтобы корзина Woocommerce думала, что 16 товаров + 1
free_gift
= 16 товаров - Заставьте Woocommerce корзину думать, что 12 элементов + 1
free_gift
= 12 элементов
Мой код, который позволяет добавлять free_gifts сверх максимального значения 16, но не применяетсяМаксимальное правило 16 пунктов:
// Set a maximum number of products requirement before checking out
add_action( 'woocommerce_check_cart_items', 'spyr_set_max_num_products' );
function spyr_set_max_num_products() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
$cart_num_products = 0;
foreach ( WC()->cart->cart_contents as $cart_item_key => $cart_item ) {
// HERE I AM TRYING TO SKIP AND PREVENT CART ITEMS OF FREE_GIFTS BEING COUNTED
if ( isset( $cart_item['free_gift'] ) ) {
continue;
}
// Count for regular products.
$cart_num_products++;
}
// Set the maximum number of products before checking out
$maximum_num_products = 16;
// Compare values and add an error is Cart's total number of products
// happens to be less than the minimum required before checking out.
// Will display a message along the lines of
// A Maximum of 16 products is allowed before checking out. (Cont. below)
if( $cart_num_products > $maximum_num_products ) {
// Display our error message
wc_add_notice( sprintf( '<strong>A Maximum of %s snacks are allowed per order.</strong>'
. '<br />Current number of snacks: %s.',
$maximum_num_products,
$cart_num_products ),
'error' );
}
}
}