【问题标题】:Prevent add to cart if subtotal is zero in Woocommerce: not able to get the subtotal before adding to cart如果 Woocommerce 中的小计为零,则阻止添加到购物车:在添加到购物车之前无法获取小计
【发布时间】:2021-07-12 21:58:12
【问题描述】:

我已经设置了带有 woo 变体样本的产品,变体已设置为复选框组,每个变体都有不同的价格,因此客户可以选择他们想要的产品,他们选择的每个变体的价格将被添加到总价中.它正在工作,我可以将计算出的价格添加到购物车中。但是如果没有选择变化,价格保持为 0 并以 0 作为小计添加到购物车,如果价格为零,我想阻止产品添加到购物车。

我试过了

add_filter( 'woocommerce_add_to_cart_validation', 'my_validate_add_cart_item', 10, 3 );
function my_validate_add_cart_item( $passed, $product_id, $quantity  ) {
   $amount =  WC()->cart->subtotal;
   if( $amount == 0 ) {
    wc_add_notice( "Pls select a product", "error" );
     $passed = false;
   }
  return $passed;
}

我已经尝试了以下

global $woocommerce; 

        $amount =  WC()->cart->get_total('raw') ;
        $amount1 =  WC()->cart->subtotal;
        $amount2 = $woocommerce->cart->cart_contents_total;
        $amount3 = $woocommerce->cart->total;
        $amount4 = WC()->cart->get_cart_contents_total();
        $amount5 = WC()->cart->get_cart_subtotal();
        $amount6 = WC()->cart->get_cart_total();
        $amount7 = WC()->cart->cart_contents_total;
        $amount8 = WC()->cart->get_displayed_subtotal();

但总金额始终为零,在添加到购物车之前无法获得小计。即使我选择了变体并且在产品页面上计算了总数(>0),总数也为零

【问题讨论】:

  • 当我试图在我的functions.php中获取总价时,价格为零,即使我在产品页面上选择了一些变体,并且它显示了购物车中变体价格的总和结帐页面。
  • 它发生在没有任何变化的简单产品上,我禁用了 ajax 以在模板中添加到购物车,并在 woocommerce 中禁用存档页面。无论我尝试什么,我都无法获得 functions.php 中的小计。我也会检查客户端。
  • 我在停用插件后检查了它,当我将任何产品添加到购物车时,我无法在我的主题的functions.php中获得小计,它在购物车中完美显示了总数和结帐页面,但无法在functions.php中进行购物车验证,因为我无法获得小计。

标签: php wordpress woocommerce


【解决方案1】:

如果购物车是空的并且您(第一次)将产品添加到购物车中,则在挂钩 woocommerce_add_to_cart_validation 中使用的 WC()->cart->subtotal 的值将始终返回零。因为此检查发生在产品添加到购物车之前,因此小计尚未更新。

您应该使用 Javascript(或 jQuery)脚本来禁用“添加到购物车”按钮,如果没有选中任何复选框(如果没有选中,则选择选项就是这种情况被选中)。

这样您就可以确保当用户点击“加入购物车”时价格始终大于零。

【讨论】:

  • 是的,这是我的第一个 woocommerce 网站,虽然我可以在将小计添加到购物车之前获取小计,但这是不可能的。感谢您的确认。我只是转储了 $_POST 并根据选中的复选框(变体)完成了购物车验证。
猜你喜欢
  • 2018-08-29
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2015-08-18
相关资源
最近更新 更多