虽然该功能在前端似乎运行良好,但在后端,我有:

严重未捕获错误:调用成员函数

这就是函数.

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 admin中没有购物车.在WC admin中使用is_admin()不起作用,因此您的$total_weight声明抛出了错误.

为了确保只在购物车或 checkout 台上显示网关,请使用这些条件.

而且,不管它值多少钱...WPC和PHPC不喜欢内联控件.为了更清晰易读,你应该把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;
}

Php相关问答推荐

PHP-转义字符串内的双反斜杠

将产品类别添加到WooCommerce产品附加信息

在Laravel Eloquent中实现一对多关系

将日期数组排序为年->;月

免费送货柜台,考虑到折扣码

如何在Livewire 3 Form类中做依赖注入?

Laravel服务Provider 没有向服务类注入价值

如何在laravel中添加延迟?

使用HPOS过滤WooCommerce中的订单列表

如何在codeigniter中将order_by RAND与下面的代码一起使用

允许在WooCommerce管理订单列表中使用计费邮箱进行搜索

htaccess 重定向子域错误的 url

WooCommerce 有关新订单的附加邮箱通知,其中包含具体详细信息

使用 PHP 的 OAuth 2.0 MAC

$_SERVER 超全局变量在 PHP 中是否保证可写?

PHP:如何将多列sql查询结果转换成数组

我需要获取传递到这个数组中的数据,但我没有得到它,因为在 Laravel 中数组是这样出现的

路由未定义的 laravel 导出

如何将文件直接上传到 Cloudinary 而不先保存在 public 文件夹中

使用 OOP PHP 创建动态 WHERE 子句.如何实现 BETWEEN 运算符?