如何将额外/额外/第二个用户角色分配给多个用户(具有特定用户角色)

时间:2016-12-03 作者:Pete

我有500个用户,其中50个用户分配给用户角色XYZ。我希望这50个XYZ用户保留其当前XYZ用户角色but also 被分配另一个/附加/额外/第二个用户角色ABC。。。作为批量作业。

我正在寻找一个可以

查找用户角色为XYZ的所有用户,然后将其分配给ABC的第二个用户角色

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

通过编写一个简单的函数并将其挂接到与用户相关的操作上,您应该能够自己做到这一点(您是想做一次还是持续做一次取决于您自己)。

有几种不同的方法可以触发它,但也许我能想到的最简单的方法就是profile_update 钩子,以便每次保存用户时都能运行它。你也可以user_register 因此,每次添加新用户时,它都会运行,以确保数据保持同步。为了测试这一点,您需要尝试保存现有用户或创建新用户,因为这将触发动作挂钩。

add_action( \'profile_update\', \'wpse_assign_abc_role_to_xyz_users\', 10 );
add_action( \'user_register\', \'wpse_assign_abc_role_to_xyz_users\', 10 );

function wpse_assign_abc_role_to_xyz_users() {
   $args = array(
        \'role\'         => \'xyz\', // Set the role you want to search for here
        \'role__not_in\' => array( \'abc\' ), // If they already have abc role, we can skip them
        \'number\'       => \'500\', // Good idea to set a limit to avoid timeouts/performance bottlenecks
    ); 
    $xyz_users = get_users( $args );

    // Bail early if there aren\'t any to update
    if ( count( $xyz_users ) === 0 ) return;

    // get_users() returns an array of WP_User objects, meaning we can use the add_role() method of the object

    foreach ( $xyz_users as $user ) {
        $user->add_role( \'abc\' );
    }
}
这将假定您已经添加了abc 角色使用add_role 以便WP意识到这一点。

不幸的是,我现在无法测试它,但我会稍后再尝试测试,不过这会让您朝着正确的方向前进。

相关推荐

如何从/wp-json/wp/v2/USERS/Me获取数据

我试图在wordpress中使用JWT auth获取用户数据。我被发送给/wp-json/wp/v2/users/me的邮递员get请求中包含了我从/wp-json/jwt-auth/v1/token获得的令牌。但我有一个错误:{ "code": "rest_not_logged_in", "message": "you are not logged in", "dat