当订单金额低于 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()
,但我再次看到一组不同的错误。 您需要专门定位结账页面,以避免警告或错误。尝试以下操作:
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()
是购物车商品小计金额不含税。