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

为WooCommerce会员与普通用户实现条件化头像设置

WooCommerce Memberships 会员与普通用户差异化头像实现

下面是整合后的代码,通过pre_get_avatar钩子实现会员与普通用户的头像差异化显示逻辑,无需额外修改默认头像选项:

// 为会员和普通用户设置差异化默认头像
add_filter( 'pre_get_avatar', 'custom_membership_avatar', 10, 3 );
function custom_membership_avatar( $avatar, $id_or_email, $args ) {
    // 处理用户ID或邮箱,获取用户对象
    $user = false;
    if ( is_numeric( $id_or_email ) ) {
        $user = get_user_by( 'id', $id_or_email );
    } elseif ( is_object( $id_or_email ) && isset( $id_or_email->user_id ) ) {
        $user = get_user_by( 'id', $id_or_email->user_id );
    } elseif ( is_string( $id_or_email ) ) {
        $user = get_user_by( 'email', $id_or_email );
    }

    // 如果用户存在,判断是否为活跃会员
    if ( $user && wc_memberships_get_user_active_memberships( $user->ID ) ) {
        // 会员专属头像
        $avatar = sprintf( '<img src="%s" alt="会员头像" %s />', 
            esc_url( 'https://staranddaisy.in/wp-content/uploads/2022/11/Circle_Design_Membership_Level_GOLD.webp' ),
            isset( $args['height'] ) && isset( $args['width'] ) ? sprintf( 'height="%d" width="%d"', $args['height'], $args['width'] ) : ''
        );
    } else {
        // 普通用户默认头像
        $avatar = sprintf( '<img src="%s" alt="默认头像" %s />', 
            esc_url( 'http://staranddaisy.in/wp-content/uploads/2022/11/smily_icon_avatar-1.png' ),
            isset( $args['height'] ) && isset( $args['width'] ) ? sprintf( 'height="%d" width="%d"', $args['height'], $args['width'] ) : ''
        );
    }

    return $avatar;
}

代码说明

  • 统一使用pre_get_avatar钩子,避免多钩子冲突,逻辑更集中
  • 完善用户对象获取逻辑,兼容$id_or_email参数的多种传入形式(ID、邮箱、评论对象等)
  • 对头像URL使用esc_url()进行安全转义,符合WordPress安全规范
  • 保留头像尺寸参数,确保页面样式一致性
  • 通过wc_memberships_get_user_active_memberships()判断用户是否为活跃会员,精准区分会员与普通用户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:55:16