本文介绍如何优化 wordpress 中处理多用户角色的 ajax 后端逻辑,避免重复代码,使用 foreach 遍历配置的角色数组一次性获取所有启用角色的用户显示名称。
在 WordPress 插件开发中,常需根据管理员配置(如 get_option('show_users') 返回的布尔型角色开关数组)动态筛选并返回特定用户角色的数据。原始写法往往为每个角色(如 administrator、editor、author)单独编写一段几乎相同的 get_users() + foreach 逻辑,导致代码冗余、难以维护。
更优雅的解法是直接遍历角色配置数组本身,而非硬编码每个角色名。因为 get_option('show_users') 返回的是形如 ['administrator' => true, 'editor' => false, 'author' => 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[$co
unt] = $user->display_name;
$count++;
}
}
}
// 最终输出 JSON(AJAX 响应标准做法)
wp_send_json($result);✅ 关键改进点说明:
⚠️ 注意事项:
通过这一重构,代码行数减少 60% 以上,逻辑清晰度与可维护性显著提升,真正实现“配置驱动行为”的现代插件开发实践。