如果 WooCommerce 中的小计低于一定金额,则隐藏 COD,“小计”财产问题

问题描述 投票:0回答:1

当订单金额低于 10 美元时,我尝试禁用/删除 WooCommerce 提供的货到付款选项

我正在使用的脚本正在运行,事实上它隐藏了结账页面中的选项,但我收到了这样的错误:

[STDERR] PHP 警告:尝试在

中读取 null 属性“小计”
add_filter( 'woocommerce_available_payment_gateways', 'ts_disable_cod' );
function ts_disable_cod( $available_gateways ) {
    $minimum = 11;
    if ( WC()->cart->subtotal < $minimum ) {
        unset( $available_gateways['cod'] );
    }
    return $available_gateways;
}

我尝试使用

WC()->cart->get_cart_subtotal()
,但我再次看到一组不同的错误。
如何从我提供的代码中避免警告和错误?

php woocommerce hook-woocommerce checkout payment-method
1个回答
0
投票

您需要专门定位结账页面,以避免警告或错误。尝试以下操作:

add_filter( 'woocommerce_available_payment_gateways', 'ts_disable_cod' );
function ts_disable_cod( $available_gateways ) {
    // Target Checkout to avoid warnings or errors
    if( is_checkout() && ! is_wc_endpoint_url() ) {
        if ( WC()->cart->subtotal <= 10 ) {
            unset( $available_gateways['cod'] );
        }
    }
    return $available_gateways;
}

它应该可以正常工作。

说明:

在某些情况下未定义购物车对象:在后端和“付款订单”端点中,也会触发钩子

woocommerce_available_payment_gateways
,然后
WC()->cart->subtotal
将逻辑上抛出警告通知'尝试读取属性“小计”在 null'.

与购物车小计相关的注释:

  • WC()->cart->subtotal
    是购物车商品小计金额含税,
  • WC()->cart->get_subtotal()
    是购物车商品小计金额不含税
© www.soinside.com 2019 - 2024. All rights reserved.