根据商店存档页面验证woocommerce购物车

时间:2018-05-23 18:11:35

标签: php wordpress woocommerce cart hook-woocommerce

是否可以根据用户当前所在的唯一商店存档页面,使用woocommerce_add_to_cart_validation验证woocommerce购物车?我通过ajax添加到购物车。

e.g。

  • 如果用户在Page strongshop 上,则最大项目数为 20 ...应用规则。
  • 如果用户在Page smallshop 上,并且最大项目数为 10 ....应用规则。

下面的代码段可以运行并根据$item_count >= 20应用验证:

// Prevent Redirect after cart error
add_filter( 'woocommerce_cart_redirect_after_error', '__return_false'); 
add_filter( 'woocommerce_add_to_cart_validation', 'restrict_only_one_item_in_cart' );

 function restrict_only_one_item_in_cart($cart_item_data) {

   global $woocommerce;
   $item_count = $woocommerce->cart->cart_contents_count;

   if($item_count >= 20){
      return false;
   }
   return $cart_item_data;
}

当我更新IF条件并添加is_page()约束以便将规则应用于某些页面时。 woocommerce_add_to_cart_validation根本不会触发。

使用is_page()更新了以下IF条件:

   if((is_page('strongshop') || is_page('strongshopmobile')) && $item_count >= 20){
      return false;

项目正在通过AJAX添加到购物车中,所以我很难过为什么这不会触发...任何建议?

1 个答案:

答案 0 :(得分:0)

这可能有效:

add_action( 'wp_ajax_restrict_only_one_item_in_cart', 'restrict_only_one_item_in_cart' );
add_action( 'wp_ajax_nopriv_restrict_only_one_item_in_cart', 'restrict_only_one_item_in_cart' );


function restrict_only_one_item_in_cart() {
   ...
}