将用户设置添加到特定角色

时间:2013-04-23 作者:souporserious

有可能做到这一点吗?我已经知道get current\\u user\\u can(),但它的工作方式与我需要的不同。如果有多个角色,我希望能够使用数组。

// Check roles to only add fields to necessary users
function check_role( $user ) {
    $user_role = get_user_role($user->ID);

    if($user_role == \'author\') {
        return true;
    } else {
        return false;
    }
}
add_action(\'show_user_profile\', \'check_role\');
add_action(\'edit_user_profile\', \'check_role\');

if(check_role()) {
    add_action(\'show_user_profile\', \'add_user_fields\');
    add_action(\'edit_user_profile\', \'add_user_fields\');
    add_action( \'personal_options_update\', \'save_user_fields\' );
    add_action( \'edit_user_profile_update\', \'save_user_fields\' );
}

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

在配置文件页面上存在一个全局变量$profileuser. 成员$profileuser->roles 是该用户的所有角色的数组。

<?php # -*- coding: utf-8 -*-
// Plugin Name: personal_options

add_action( \'personal_options\', \'print_user_roles\');

function print_user_roles()
{
    global $profileuser;

    print \'<pre>$profileuser->roles = \'
        . htmlspecialchars(
            var_export( $profileuser->roles, TRUE ), ENT_QUOTES, \'utf-8\', FALSE
        )
        . \'</pre>\';
}
输出:

$profileuser->roles = array (
  0 => \'administrator\',
  1 => \'editor\',
)
使用此列表比较角色。

结束