由于用户的角色存储在(dbprefix)\\u功能中,因此我会尝试获取数据库前缀,然后使用它来获取具有正确功能的人员(大写字母位于序列化数组中):
global $wpdb;
$prefix = $wpdb->prefix;
$meta_name = "{$prefix}capabilities";
\'meta_query\' => array(
\'relation\' => \'OR\',
array(
\'key\' => "{$meta_name}"
\'value\' => \'program_manager\',
\'compare\' => \'LIKE\'
),
array(
\'key\' => "{$meta_name}",
\'value\' => \'administrator\',
\'compare\' => \'LIKE\'
)
)
);
以上内容应为您提供作为程序管理员或管理员的所有用户。
我看到的可能破坏您的代码的情况如下:
if( is_array($user->role) == true){
# This will break your meta query as it could create "subscriber, administrator" as a key
# and your meta query does \'key\' => $staff_role
$staff_role=esc_attr(implode(", ",$user->role));
} else {
$staff_role=$user->role;
}
用户获得第二个角色后,查询开始查找包含逗号分隔角色的键值。当然,也许这就是你想要的,但我会仔细检查数据库,因为这样一个键会有点奇怪。