Blog do MX Cursos

WordPress – Redirecionando usuários para uma página específica

WordPress – Redirecionando usuários para uma página específica

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.

WordPressSuponhamos que você tenha criado uma página para os tipos de usuários inscritos e autores.

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.

Nossos cursos indicados

  1. Definimos uma função com nome de custom_redirect_level_user;
  2. Com if, utilizamos a função current_user_can e passamos o nível de usuário, que no caso é do assinante (subscriber);
  3. 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;
  4. Fecha o primeiro if;
  5. Abre um novo if para realizar o mesmo teste apenas passando um outro nível, no caso do autor (author);
  6. Retorna a url para página autor do nosso exemplo;
  7. Fecha o segundo if;
  8. Fecha a função custom_redirect_level_user;
  9. 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);
  1. 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
  2. Verifica se existe as permissões desse usuário, porque pode retornar o WP_Error;
  3. Verifica se tem permissão subscriber;
  4. Se tiver, define a variável $redirect_to para redirecionar para uma área especifica;
  5. Fecha o if da condição da permissão subscriber;
  6. Verifica se tem permissão de author;
  7. Se tiver, define a variável $redirect_to para redirecionar para uma área especifica;
  8. Fecha o if da condição da permissão author;
  9. Fechar o if para verificar se existem permissões;
  10. Retorna a variável $redirect_to;
  11. Fecha if da função custom_redirect_level_user;
  12. 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.
Leia também  5 plugins que seu site WordPress precisa ter

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.

O MX Cursos já está na Black Friday.