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

如何在WordPress中获取当前登录用户所属角色的所有用户?

解决方法

以下是修改后的代码,可自动获取当前登录用户的角色,并筛选出同角色的所有用户,同时优化了下拉菜单的有效性和安全性:

// 获取与当前登录用户同角色的用户
function get_same_role_users() {
    // 检查用户是否登录
    if ( !is_user_logged_in() ) {
        return '<p>请先登录</p>';
    }

    // 获取当前登录用户对象
    $current_user = wp_get_current_user();
    // 获取当前用户的角色(若用户拥有多个角色,可根据需求调整取值逻辑)
    $current_role = $current_user->roles[0];

    // 查询同角色用户,可选排除当前用户自身
    $user_query = new WP_User_Query( array( 
        'role' => $current_role,
        'exclude' => array( $current_user->ID )
    ) );

    // 构建下拉菜单HTML
    $output = '<div id="divuser"><select>';
    if ( !empty( $user_query->results ) ) {
        foreach ( $user_query->results as $user ) {
            // 用用户ID作为option的value,方便后续业务逻辑使用
            $output .= '<option value="' . esc_attr( $user->ID ) . '">' . esc_html( $user->display_name ) . '</option>';
        }
    } else {
        $output .= '<option value="">暂无同角色用户</option>';
    }
    $output .= '</select></div>';

    return $output;
}
add_shortcode( 'same_role_users', 'get_same_role_users' );

关键改动说明

  • 自动获取当前用户角色:移除原函数手动传参逻辑,通过wp_get_current_user()获取当前登录用户,再提取其角色信息
  • 登录状态检查:增加未登录提示,避免未授权访问时出现异常
  • 优化下拉菜单结构:补充<select>标签,原代码仅输出<option>无法形成有效下拉菜单
  • 安全优化:使用esc_attr()和esc_html()对输出内容转义,防止XSS攻击
  • 可选排除自身:通过exclude参数过滤当前登录用户,若需要保留可删除该参数
  • 短代码最佳实践:用return返回HTML内容替代直接echo,避免输出位置错乱

使用方法

在WordPress的文章、页面或自定义模板中插入短代码即可:

[same_role_users]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:01:13