首先,检查代码有效,并采用以下模式:
if ( $current_user->data->wp_capabilities[\'hardcoded role name\'] ) {
$role = \'hardcoded role name\';
}
因此,让我们将硬编码的角色字符串交换为一个名为
$role_name
(如果你愿意,可以叫它别的名字)。对角色名称的检查现在是:
if ( $current_user->data->wp_capabilities[$role_name] ) {
$role = $role_name;
}
但我们需要检查多个角色,所以,让我们列出要检查的角色列表
$roles_to_check = array(
\'administrator\',
\'editor\',
\'author\',
\'contributor\',
\'subscriber\'
);
然后检查列表中的每个角色
foreach ( $roles_to_check as $role_name ) {
.. do the check ..
}
到目前为止,我们所做的一切都是标准编程,很少涉及PHP的具体知识。我建议您仔细查看循环和数组,因为您的问题表明您对这些领域缺乏知识或信心。
但我们还没有结束。您希望能够处理任意角色!
因此,让我们从get_editable_roles()
. 这将为我们提供一个角色数组,但如果不稍加修改,我们无法从上面交换该数组。
$roles = get_editable_roles();
foreach ( $roles as $role_name => $role_info ) {
.. do our check ..
}
然而,在您的情况下,您需要特定用户的角色,因此回到原始检查,您使用以下数组:
$current_user->data->wp_capabilities
因此,如果我们为循环执行此操作:
foreach ( $current_user->data->wp_capabilities as $role_name => $capability ) {
你应该能做你想做的事