函数 hide_payment_gateways_based_on_weight 的严重未捕获错误
CRITICAL Uncaught Error for function hide_payment_gateways_based_on_weight
尽管该功能在前端似乎完美运行,但在后端我有:
CRITICAL Uncaught Error: Call to a member function
get_cart_contents_weight() on null in........
这是函数。
add_filter( 'woocommerce_available_payment_gateways', 'hide_payment_gateways_based_on_weight', 10, 1 );
function hide_payment_gateways_based_on_weight( $available_gateways ) {
if ( is_admin() )
return $available_gateways;
$total_weight = WC()->cart->get_cart_contents_weight();
if ( $total_weight >= 2000 && isset ($available_gateways['cod']) )
unset($available_gateways['cod']); // unset 'cod'
return $available_gateways;
}
$WC_Cart = new WC_Cart();
$total_weight = $WC_Cart->get_cart_contents_weight();
试试这样的重量。
第一个顺序问题是WC()->cart中的cart不是defined/null。在尝试获得重量之前,您应该检查是否已定义。为什么 cart 为 null 是一个二阶问题,我们无法使用此代码片段真正确定。这可能只是正常的未初始化情况或其他问题。
您的函数向管理员抛出严重错误的原因是因为 WC 管理员中没有购物车。使用 is_admin()
在 WC 管理员中不起作用,因此您的 $total_weight
声明会引发错误。
为确保您只在购物车或结账时显示网关,请使用这些条件。
另外,不管它值多少钱...WPCS 和 PHPCS 不喜欢内联控件。为了更清晰的可读性,您应该将 if 语句括在括号中。
add_filter( 'woocommerce_available_payment_gateways', 'hide_payment_gateways_based_on_weight', 10, 1 );
function hide_payment_gateways_based_on_weight( $available_gateways ) {
// Check if it's the cart page or the checkout.
if ( is_cart() || is_checkout() ) {
$total_weight = WC()->cart->get_cart_contents_weight();
if ( 2000 >= $total_weight && isset( $available_gateways['cod'] ) ) {
unset( $available_gateways['cod'] ); // unset 'cod'.
}
}
return $available_gateways;
}
尽管该功能在前端似乎完美运行,但在后端我有:
CRITICAL Uncaught Error: Call to a member function get_cart_contents_weight() on null in........
这是函数。
add_filter( 'woocommerce_available_payment_gateways', 'hide_payment_gateways_based_on_weight', 10, 1 );
function hide_payment_gateways_based_on_weight( $available_gateways ) {
if ( is_admin() )
return $available_gateways;
$total_weight = WC()->cart->get_cart_contents_weight();
if ( $total_weight >= 2000 && isset ($available_gateways['cod']) )
unset($available_gateways['cod']); // unset 'cod'
return $available_gateways;
}
$WC_Cart = new WC_Cart();
$total_weight = $WC_Cart->get_cart_contents_weight();
试试这样的重量。
第一个顺序问题是WC()->cart中的cart不是defined/null。在尝试获得重量之前,您应该检查是否已定义。为什么 cart 为 null 是一个二阶问题,我们无法使用此代码片段真正确定。这可能只是正常的未初始化情况或其他问题。
您的函数向管理员抛出严重错误的原因是因为 WC 管理员中没有购物车。使用 is_admin()
在 WC 管理员中不起作用,因此您的 $total_weight
声明会引发错误。
为确保您只在购物车或结账时显示网关,请使用这些条件。
另外,不管它值多少钱...WPCS 和 PHPCS 不喜欢内联控件。为了更清晰的可读性,您应该将 if 语句括在括号中。
add_filter( 'woocommerce_available_payment_gateways', 'hide_payment_gateways_based_on_weight', 10, 1 );
function hide_payment_gateways_based_on_weight( $available_gateways ) {
// Check if it's the cart page or the checkout.
if ( is_cart() || is_checkout() ) {
$total_weight = WC()->cart->get_cart_contents_weight();
if ( 2000 >= $total_weight && isset( $available_gateways['cod'] ) ) {
unset( $available_gateways['cod'] ); // unset 'cod'.
}
}
return $available_gateways;
}