Redirecionar usuário ao fazer login no WordPress

Nesse tutorial vou mostrar duas formas de redirecionar os usuários ao fazerem login no WordPress. Essa foi uma dúvida que apareceu no grupo WordPress Brasil do Telegram e eu já havia aplicado em um projeto onde criei uma área restrita para condôminos, com isso, para a melhor experiência do usuário é que ele seja redirecionado para a página que deseja visualizar ao logar no WordPress.

Primeiro método

Essa é a forma mais genérica, mas que pode atender a necessidade de muitos projetos. Ele redireciona todo e qualquer usuário para uma página específica. Adicione o código abaixo no seu arquivo functions.php

<?php
function custom_login_redirect( $redirect_to, $request, $user ) {
   // Redireciona para uma página específica
    return home_url( 'sua-pagina-aqui' );
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );

O código acima cria uma função chamada custom_login_redirect() e a adiciona no hook login_redirect

Segundo método

Essa forma é um pouco mais complexa por fazer verificação das capabilities do usuário para redirecioná-lo ao local específico, aqui no exemplo estamos apenas verificando se o usuário é um administrador e o redireciona para o painel administrativo, e os demais usuários serão redirecionados para sua página específica.

<?php
function custom_login_redirect( $redirect_to, $request, $user ) {
    
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        // Verifica se o usuário é um administrador
        if ( in_array( 'administrator', $user->roles ) ) {
            // Redireciona para o local padrão, o painel administrativo
            return $redirect_to;
        } else {
            // Redireciona para uma página específica
            return home_url( 'sua-pagina-aqui' );
        }
    } else {
        return $redirect_to;
    }
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );

Bônus

Como bônus, segue mais uma função que verifica o usuário ao fazer logout e também o redireciona para a home ou uma página específica.

<?php
function auto_redirect_after_logout(){
  wp_redirect( home_url() );
  exit();
}
add_action( 'wp_logout', 'custom_logout_redirect' );

Referências

Hook login_redirect – https://developer.wordpress.org/reference/hooks/login_redirect/
Roles e Capabilities – https://wordpress.org/support/article/roles-and-capabilities/
Função home_url() – https://codex.wordpress.org/Function_Reference/home_url/
Hook wp_logout – https://developer.wordpress.org/reference/functions/wp_logout/