1

我需要在某些州的结帐页面中添加手续费。为此,我使用 woocommerce add_fee 选项。但我的问题是在结帐页面上显示了手续费,但没有添加到小计中。这是我的代码

add_action( 'woocommerce_cart_calculate_fees','xa_custom_surcharge' );
function xa_custom_surcharge() {
    global $woocommerce;
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

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

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

谁能帮帮我吗。

4

1 回答 1

1

自 WooCommerce 3 以来,您的代码已过时:

  • 不能再在CRUD objects上访问属性,因此您应该使用与get_shipping_state()您的情况类似的方法。
  • global $woocommerce并且$woocommerce->cart已过时并直接替换为WC()->cart
  • WC_CartObject变量在$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 );
    }
}

现在,当使用费用 API 时,费用金额显示为总计,并在末尾添加到总计中,但不添加到小计中

在此处输入图像描述

WooCommerce 中的小计仅由购物车项目小计组成……</p>

于 2019-04-27T07:56:58.060 回答