在WordPress中有条件地更新角色



我实际上想创建一个简单的函数,但它似乎不起作用。
我希望当一个用户登录到他的帐户在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' );
   }
}

谢谢你的帮助!

您应该使用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 );

:

  • http://codex.wordpress.org/Function_Reference/wp_update_user
  • http://codex.wordpress.org/Function_Reference/add_role

最新更新