You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改WooCommerce代码:根据用户登录状态控制配送方式

修改后的代码(基于用户登录状态控制配送方式显示)

原代码的问题在于使用了错误的登录状态判断方法,WordPress中判断用户是否登录应该用is_user_logged_in()函数,以下是修正后的代码:

add_filter( 'woocommerce_package_rates', 'shipping_methods_based_on_logged_in', 10, 2 );
function shipping_methods_based_on_logged_in( $rates, $package ){
    // 判断用户是否已登录
    if ( is_user_logged_in() ) {
        // 已登录用户:移除这些配送方式
        $shipping_rates_ids = array('flat_rate:13', 'flat_rate:15');
    } else {
        // 未登录用户:移除这些配送方式
        $shipping_rates_ids = array('flat_rate:10', 'flat_rate:7');
    }

    // 遍历当前包裹的配送方式,移除指定的选项
    foreach( $rates as $rate_key => $rate ) {
        if ( in_array( $rate_key, $shipping_rates_ids) ) {
            unset( $rates[$rate_key] ); 
        }
    }
    
    return $rates;
}

关键修改说明

  • 替换了错误的登录判断逻辑,使用WordPress官方函数is_user_logged_in()来准确检测用户登录状态
  • 调整了注释内容,明确区分已登录/未登录用户对应的移除规则(你可以根据实际需求修改数组里的配送方式ID)
  • 移除了无用的get_user_meta代码,因为当前需求不需要读取用户权限元数据

注意:修改代码后,需要在WooCommerce设置中清空缓存(进入WooCommerce > 设置 > 配送 > 配送区域,点击右上角的“清空缓存”按钮),确保新的规则生效。

内容的提问来源于stack exchange,提问作者Martijn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:39:52