【发布时间】:2020-08-20 02:39:51
【问题描述】:
我正在使用 WooCommerce 并试图将购物车限制为仅 10 种产品。使用我的functions.php 中的以下代码,它可以完美运行。
function limit_cart_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_items_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_items_count + $quantity;
if ( $cart_items_count >= 10 || $total_count > 10 ) {
$passed = false;
}
return $passed;
}
// Checking and validating when products are added to cart
add_filter( 'woocommerce_add_to_cart_validation', 'limit_cart_allowed_add_to_cart', 10, 3 );
function limit_cart_allowed_cart_update( $passed, $cart_item_key, $values, $updated_quantity ) {
$cart_items_count = WC()->cart->get_cart_contents_count();
$original_quantity = $values[ 'quantity' ];
$total_count = $cart_items_count - $original_quantity + $updated_quantity;
if ( $cart_items_count > 10 || $total_count > 10 ) {
$passed = false;
}
return $passed;
}
// Checking and validating when updating cart item quantities when products are added to cart
add_filter( 'woocommerce_update_cart_validation', 'limit_cart_allowed_cart_update', 10, 4 );
但是,有一个问题,我昨天才注意到它,直到现在我找不到解决方案。
用于将产品添加到购物车的 AJAX 不再有效。 WooCommerce 的设置中有一个选项可以启用 AJAX 添加到购物车功能,它已启用,但由于上面的代码,它不再工作了。
当我尝试将产品添加到购物车并且购物车中的产品已经有 10 个时,它会将我重定向到单个产品页面。不应该是这样,我想保留 ajax 功能,但只是将购物车限制为 10 个产品。
【问题讨论】:
-
我已经测试了您的代码,它在不禁用 Ajax 添加到购物车的情况下工作,但是当过滤器挂钩 woocommerce_add_to_cart_validation 返回 false(购物车中超过 10 件商品)时,使用 ajax add 时总是重定向到产品单页到购物车。您无能为力,因为这是正常过程。
标签: php wordpress woocommerce