Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果Woocommerce中的小计为零,则禁止添加到购物车:在添加到购物车之前无法获取小计_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 如果Woocommerce中的小计为零,则禁止添加到购物车:在添加到购物车之前无法获取小计

Php 如果Woocommerce中的小计为零,则禁止添加到购物车:在添加到购物车之前无法获取小计,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我用woo variation样例设置了一个产品,variation设置为复选框组,每个variation具有不同的价格,因此客户可以选择他们想要的产品,并且他们选择的每个variation的价格将添加到总价格中。它的工作,我能够添加到购物车与计算的价格。但如果未选择任何变化,则价格保持为0,并以0作为小计添加到购物车中。如果价格为零,我希望防止产品添加到购物车中 我试过了 add_filter( 'woocommerce_add_to_cart_validation', 'my_validat

我用woo variation样例设置了一个产品,variation设置为复选框组,每个variation具有不同的价格,因此客户可以选择他们想要的产品,并且他们选择的每个variation的价格将添加到总价格中。它的工作,我能够添加到购物车与计算的价格。但如果未选择任何变化,则价格保持为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();

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

如果未选中复选框,则应使用Javascript(或jQuery)脚本禁用“添加到购物车”按钮(如果未选中复选框,则与选择选项相同)


这样,当用户单击“添加到购物车”时,您可以确保价格始终大于零。

当我试图在我的functions.php中获取总价格时,价格为零,即使我在产品页面上选择了一些变体,并且在购物车和结帐页面上显示了变体的总价格。这种情况发生在没有任何变体的简单产品上,我已禁用ajax以在模板中添加到购物车,并在woocommerce中禁用存档页面。无论我尝试了什么,我都无法在functions.php中获得小计。我也会检查客户端。我在停用插件后检查了它,当我的主题添加到购物车时,我无法在functions.php中获得任何产品的小计,它在购物车和结帐页面中完美地显示了总数,但无法在functions.php中进行购物车验证,因为我无法获得小计。是的,这是我的第一个woocommerce网站,我想我可以在它添加到购物车之前获取小计,但这是不可能的。感谢您的确认。我只是简单地转储了$u帖子,并根据选中的复选框(变体)完成了购物车验证。