No WordPress existem níveis ou privilégios de usuários, como Administrador, Editor, Autor, etc. Isso é muito útil para definir responsabilidades e permissões distintas ao usuário.
Ao utilizamos os níveis de acesso do WordPress, muitas vezes queremos criar algo personalizado para cada nível e redirecionar para essas páginas específicas quando for logar no WordPress.
Podemos realizar essa tarefa de uma forma bem simples.

No arquivo functions.php do tema vamos adicionar o nosso código que será uma função. Vamos adicioná-lo no add_filter para substituir o valor padrão dele, que será para onde será redirecionado quando o usuário realizar o login.
Update – 02/10/2017
Para realizar a verificação, utilizaremos a função current_user_can do WordPress, com o qual testaremos se ele pertence a algum nível de acesso ou não.
/**
function custom_redirect_level_user() {
if (current_user_can('subscriber')) {
return home_url('/inscrito');
}
if (current_user_can('author')) {
return home_url('/autor');
}
}
add_filter('login_redirect', 'custom_redirect_level_user');
**/
Explicação do código acima.
Definimos uma função com nome de custom_redirect_level_user;Com if, utilizamos a função current_user_can e passamos o nível de usuário, que no caso é do assinante (subscriber);Se for verdade (o usuário é do nível assinante), ele retorna a url para uma página criada no exemplo a página inscrito;Fecha o primeiro if;Abre um novo if para realizar o mesmo teste apenas passando um outro nível, no caso do autor (author);Retorna a url para página autor do nosso exemplo;Fecha o segundo if;Fecha a função custom_redirect_level_user;Adiciona função que criamos no filtro login_redirect;
function custom_redirect_level_user( $redirect_to, $requested_redirect_to, $user) {
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'subscriber', $user->roles ) ) {
$redirect_to = home_url('/inscrito');
}
if ( in_array( 'author', $user->roles ) ) {
$redirect_to = home_url('/autor');
}
}
return $redirect_to;
}
add_filter('login_redirect', 'custom_redirect_level_user', 10,3);
- Define a função custom_redirect_level_user, que recebe 3 parâmetros: o primeiro do redirecionamento, segundo o redirecionamento passado por parâmetro, e terceiro o objeto WP_User ou WP_Error
- Verifica se existe as permissões desse usuário, porque pode retornar o WP_Error;
- Verifica se tem permissão subscriber;
- Se tiver, define a variável $redirect_to para redirecionar para uma área especifica;
- Fecha o if da condição da permissão subscriber;
- Verifica se tem permissão de author;
- Se tiver, define a variável $redirect_to para redirecionar para uma área especifica;
- Fecha o if da condição da permissão author;
- Fechar o if para verificar se existem permissões;
- Retorna a variável $redirect_to;
- Fecha if da função custom_redirect_level_user;
- Adicione ao add_filter, o gancho login_redirect, a função que criamos, o nível de prioridade de execução, e quantidade de parâmetros que a função que criarmos irá receber.
Dessa forma, quando o usuário logar em nossa página, será redirecionado para a página que informamos de acordo com o nível do usuário.
Gostou do artigo? Deixe seu comentário e compartilhe.
Um abraço.
