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

WooCommerce添加用户会员计划为body类代码故障排查

问题原因与修复方案

核心问题:函数提前返回导致后续代码无法执行

在am_membership_class_filter函数里,第一个会员计划判断结束后立刻执行了return $classes;,这会直接终止函数运行——后面针对platinum和pro的判断代码永远不会被触发,自然无法添加对应的body类。

修复后的完整代码

add_filter( 'body_class', 'am_add_slug_body_class' );

function am_add_slug_body_class( $classes ) {
    global $post;
    if ( isset( $post ) ) {
        $classes[] = $post->post_type . '-' . $post->post_name;
    }
    return $classes;
}

/* Add Logged-Out Body Class */
add_filter('body_class','am_logged_in_filter');

function am_logged_in_filter($classes) {
    if( !is_user_logged_in() ) {
        $classes[] = 'logged-out';
    }
    // 已登录用户无需添加空类,直接返回原数组即可
    return $classes;
}

/* Add Membership Plan Body Classes */
add_filter('body_class','am_membership_class_filter');

function am_membership_class_filter($classes) {
    if( wc_memberships_is_user_member( null, 'prime' ) ) {
        $classes[] = 'prime';
    }
    
    if( wc_memberships_is_user_member( null, 'platinum' ) ) {
        $classes[] = 'platinum';
    }
    
    if( wc_memberships_is_user_member( null, 'pro' ) ) {
        $classes[] = 'pro';
    }

    // 所有判断完成后统一返回
    return $classes;
}

额外优化说明

  • 移除了am_logged_in_filter中给已登录用户添加空类的逻辑,空类对前端样式无任何作用,纯粹浪费资源。
  • 调整会员判断函数结构,将所有条件判断放在统一的return语句之前,确保每个会员计划的判断都能被执行到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:02:36