Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 WC()->;购物车->;费用总额和WC()->;购物车->;添加费用时,get_fee_total()在签出页面上显示零_Php_Wordpress_Woocommerce - Fatal编程技术网

Php WC()->;购物车->;费用总额和WC()->;购物车->;添加费用时,get_fee_total()在签出页面上显示零

Php WC()->;购物车->;费用总额和WC()->;购物车->;添加费用时,get_fee_total()在签出页面上显示零,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我们有一个结帐字段编辑器模块,可以将费用附加到选项字段,这样当您选择这样的选项字段时,它将向您的购物车添加费用并更新结帐总额 我们还有一个自定义支付网关模块,显示客户要支付的金额,计算总额的代码如下所示: $total_cart = (float)is_object( WC()->cart ) ? WC()->cart->cart_contents_total : ''; $total_shipping = (float)is_object( WC()->cart )

我们有一个结帐字段编辑器模块,可以将费用附加到选项字段,这样当您选择这样的选项字段时,它将向您的购物车添加费用并更新结帐总额

我们还有一个自定义支付网关模块,显示客户要支付的金额,计算总额的代码如下所示:

$total_cart = (float)is_object( WC()->cart ) ? WC()->cart->cart_contents_total : '';

$total_shipping = (float)is_object( WC()->cart ) ? WC()->cart->shipping_total : '';

$total_tax = (float)is_object( WC()->cart ) ? WC()->cart->tax_total : '';

$total_shipping_tax = (float)is_object( WC()->cart ) ? WC()->cart->shipping_tax_total : '';

$total_fees = (float)is_object( WC()->cart ) ? WC()->cart->fee_total : '';

$total_amount = $total_cart+$total_shipping+$total_tax+$total_shipping_tax+$total_fees;
虽然变量
$total\u shipping
在选择其他配送方式时会很好地更新,但变量
$total\u fees
在添加费用时不会更新为正确的值(保持为零),除非刷新浏览器。我们还尝试使用函数
get\u fee\u total()
来计算它,但结果是一样的


我们使用一种冗余的方式来计算总数,例如
WC()->cart->total
WC()->cart->get_total()
最初显示正确的值,但在用户选择结帐表单上的任何内容后,该值变为零,从而导致购物车出现“Ajax刷新”。

您的问题是由于数据碎片造成的。这些片段正在缓存,一旦添加了费用,就不会被刷新。如果您使用
AJAX
调用费用更改,您可以通过执行
jQuery(document.body).trigger('wc_fragment_refresh')触发强制片段刷新
Hi@H.Bloch谢谢你的评论。那么,增加的费用在wc中有一个单独的片段?因为交付费用没有问题,所以在切换交付方法时,该变量立即获得正确的值。此外,当添加费用时,购物车总数会在浏览器中很好地更新。由于某种原因,只有变量本身没有得到更新。可能只有费用部分没有包含在wc片段响应中,请尝试使用浏览器开发工具查看wc_片段返回的内容。您还可以在localStorage下看到缓存的值