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下看到缓存的值