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

WooCommerce条件头像功能失效:按会员状态设置不同头像求助

问题分析与修复方案

原代码存在三个核心问题导致功能失效:

  • 函数定义嵌套在条件判断中,不符合PHP语法规范,会引发函数定义异常
  • 会员状态的逻辑判断完全颠倒:有活跃会员时设置非会员头像,无活跃会员时反而设置会员头像
  • 未正确初始化用户ID变量,无法获取当前用户的会员状态

修复后的代码

add_filter( 'avatar_defaults', 'wpb_membership_based_gravatar' );
function wpb_membership_based_gravatar( $avatar_defaults ) {
    // 获取当前用户ID(未登录用户ID为0)
    $user_id = get_current_user_id();
    
    if ( $user_id > 0 ) {
        // 获取用户的活跃会员资格
        $active_memberships = wc_memberships_get_user_active_memberships( $user_id );
        
        // 修正逻辑:活跃会员显示专属头像,非活跃会员显示普通头像
        $myavatar = ! empty( $active_memberships ) 
            ? 'https://staranddaisy.in/wp-content/uploads/2022/11/Circle_Design_Membership_Level_GOLD.webp'
            : 'http://staranddaisy.in/wp-content/uploads/2022/11/smily_icon_avatar-1.png';
        
        $avatar_defaults[ $myavatar ] = '会员等级头像';
    }
    
    return $avatar_defaults;
}

关键修正说明

  • 将函数定义移至全局作用域,避免条件嵌套定义的语法问题
  • 反转会员状态判断逻辑,匹配需求中的“活跃会员显示专属头像”规则
  • 在钩子函数内部通过get_current_user_id()动态获取当前用户ID,确保每次调用都能对应正确用户的会员状态
  • 增加登录状态判断,未登录用户保持默认头像逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:20:46