WooCommerce结帐页面上的额外费用未添加到小计

时间:2019-04-27 05:07:14

标签: php wordpress woocommerce cart fee

我需要在某些状态下的结帐页面中添加手续费。为此,我正在使用woocommerce add_fee选项。但是我的问题是在结帐页面上显示的手续费不计在内。这是我的代码

SELECT  cd1.CustomerNumber,
    cd1.TransactionNumber,
    cd1.AddonCode,
    cdg1.CustomerNumber,
    cdg1.TransactionNumber,
    cdg1.AddonCode
FROM Orig_DD cd1 INNER JOIN LaterLines_DD cdg1  ON cd1.CustomerNumber = cdg1.CustomerNumber AND cd1.TransactionNumber = (cdg1.TransactionNumber +1)
ORDER BY cd1.CustomerNumber, cdg1.AddonCode;

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

自WooCommerce 3起,您的代码已过时。

  • 无法在CRUD objects上访问属性,因此您应使用get_shipping_state()之类的方法。
  • global $woocommerce$woocommerce->cart已过时,直接由WC()->cart取代
  • 在钩子函数中,WC_Cart对象$cart变量可用作参数。

正确的代码是:

add_action( 'woocommerce_cart_calculate_fees','add_custom_surcharge', 10, 1 );
function add_custom_surcharge( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $state = array('MH');
    $surcharge  = 10;

    if ( in_array( WC()->customer->get_shipping_state(), $state ) ) {
        $cart->add_fee( 'Additional Charge', $surcharge, true );
    }
}

现在使用Fee API时,费用金额显示为总计,并最后添加到总计中,但不计入小计< / strong>:

enter image description here

WooCommerce中的小计仅由购物车项目小计……