有条件地更新WordPress中的角色

时间:2014-07-12 19:00:37

标签: wordpress role

我实际上想要创建一个简单的功能,但它似乎不起作用 我希望当用户在Wordpress上登录他的帐户以在某些情况下更改他的角色(订阅者 - > directory_1)时(在这种情况下很容易进行测试,它应该每次更改,但仍然无法正常工作)。
这是我的代码:

add_action('wp_login', 'update_roles');

function update_roles()
{
   global $wpdb;
   $author = wp_get_current_user();
   if(current_user_can('subscriber'))
   {
       $author->remove_role( 'subscriber' );
       $author->add_role( 'directory_1' );
   }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您应该使用wp_update_user()来更新用户的角色。使用add_role()添加角色后,您可以执行以下操作:

function custom_update_roles( $user_login, $user ) {

    if ( ! empty( $user->roles ) && is_array( $user->roles ) ) {

        if ( in_array( "subscriber", $user->roles ) ) {
            $user_id = wp_update_user( array( 'ID' => $user->ID, 'role' => 'directory_1' ) );

            if ( is_wp_error( $user_id ) ) {
                // Error.
            } else {
                // Success.
            }
        } else {
            // This user is not a subscriber.
        }
    }
}
add_action( 'wp_login', 'custom_update_roles', 10, 2 );

参考: