贝利信息

如何在 WordPress AJAX 调用中通过循环动态获取多角色用户列表

日期:2026-01-21 00:00 / 作者:聖光之護

本文介绍如何优化 wordpress 中处理多用户角色的 ajax 后端逻辑,避免重复代码,使用 foreach 遍历配置的角色数组一次性获取所有启用角色的用户显示名称。

在 WordPress 插件开发中,常需根据管理员配置(如 get_option('show_users') 返回的布尔型角色开关数组)动态筛选并返回特定用户角色的数据。原始写法往往为每个角色(如 administrator、editor、author)单独编写一段几乎相同的 get_users() + foreach 逻辑,导致代码冗余、难以维护。

更优雅的解法是直接遍历角色配置数组本身,而非硬编码每个角色名。因为 get_option('show_users') 返回的是形如 ['administrator' => true, 'editor' => false, 'aut

hor' => true] 的关联数组,其键(key)即为角色名,值(value)表示是否启用该角色展示。我们可据此直接驱动查询:

$user_roles = get_option('show_users');
$result = []; // 初始化结果数组(重要:避免未定义变量)
$count = 0;

// 遍历配置数组:$role 是角色名(如 'administrator'),$enabled 是启用状态(true/false)
foreach ($user_roles as $role => $enabled) {
    if ($enabled) { // 仅对启用的角色执行查询
        $users = get_users([
            'role' => $role,
            'fields' => ['ID', 'display_name'] // 可选:限制字段提升性能
        ]);

        foreach ($users as $user) {
            $result[$count] = $user->display_name;
            $count++;
        }
    }
}

// 最终输出 JSON(AJAX 响应标准做法)
wp_send_json($result);

关键改进点说明:

⚠️ 注意事项:

通过这一重构,代码行数减少 60% 以上,逻辑清晰度与可维护性显著提升,真正实现“配置驱动行为”的现代插件开发实践。