
🔐 Botão de iniciar e terminar sessão no menu do WordPress: um guia passo a passo 2026
O WordPress padrão não consegue mostrar um botão «Login» para visitantes não autenticados e um botão «Logout» para utilizadores autenticados na mesma posição do menu. À primeira vista, isto parece um pormenor menor. Mas para um site com painel de membros, área de membros ou fórum, é uma necessidade básica e, sem isso, a navegação transforma-se num jogo de adivinhas.
Anteriormente, o plugin BAW Login/Logout Menu tratava desta tarefa. O autor descontinuou o projeto em 2025, deixando milhares de sites sem atualizações. O seu sucessor direto assumiu o lugar: Login or Logout Menu Item, com mais de 20 000 instalações ativas e uma classificação de 4,8 no WordPress.org.
Compilámos tudo num único guia: desde instalar o plugin em dois minutos até redirecionamentos personalizados por função e desativação da barra de administração para utilizadores comuns.
💡 Visão geral rápida:
- Instale o plugin Login or Logout Menu Item e configure três campos de redirecionamento
- Adicione um item de menu «Login|Logout» através do editor clássico ou de blocos
- Configure lógica refinada através de snippets no functions.php: redirecionamentos por função, logout sem confirmação, substituição do wp-login.php
- Oculte a barra de administração dos utilizadores comuns e bloqueie o seu acesso ao wp-admin
Método 1: plugin Login or Logout Menu Item, rápido e sem código

A forma mais simples de adicionar um botão dinâmico de login e logout é o plugin Login or Logout Menu Item. É o sucessor direto do BAW Login/Logout Menu, escrito de raiz por um dos contribuidores do projeto original. Em junho de 2026, o plugin conta com mais de 20 000 instalações ativas, 23 avaliações e uma classificação de 4,8 estrelas. A versão 1.3.2 foi testada até ao WordPress 7.0.
Porquê este plugin em vez de uma solução com código? O plugin não mexe no functions.php e não se parte quando muda de tema. Suporta o editor de blocos e o item «Login|Logout» pode ser adicionado a um bloco de Navegação através da pesquisa normal. Também tem uma página de configurações dedicada: nada de URLs mágicas nos campos do menu, tudo é transparente.
Instalação e configuração
Instale o plugin da forma padrão: Plugins → Adicionar Novo, escreva Login or Logout Menu Item, clique em Instalar e Ativar. Após a ativação, aparece um novo item no menu de administração: Configurações → Login or Logout. Existem três campos e eis o que significam:
- URL da Página de Login: o endereço da página de login. Para a maioria dos sites,
/wp-login.phpé suficiente. Se usar uma página de login personalizada (por exemplo/login/via MemberPress ou WooCommerce), introduza-a aqui. - URL de Redirecionamento de Login: para onde o utilizador é enviado após iniciar sessão. Normalmente
/account/ou simplesmente/para a página inicial. Note que plugins de membros como o MemberPress ou o Restrict Content Pro podem sobrepor este redirecionamento com as suas próprias configurações. - URL de Redirecionamento de Logout: para onde enviar o utilizador após terminar sessão. Definir
/ou/wp-login.phpfaz sentido.
Adicionar o item de menu
Vá a Aparência → Menus. No canto superior direito, clique em Opções de Ecrã e verifique se a caixa Login/Logout está ativada. Aparecerá um bloco «Login/Logout» na coluna da esquerda; marque Login|Logout e clique em Adicionar ao Menu.
O item de menu aparecerá na lista. O seu URL deve permanecer #lolmiloginout# porque este é o gatilho do plugin; não o altere. Pode editar o Rótulo de Navegação: por exemplo «Login | Logout» ou «A Minha Conta». Guarde o menu.
Se estiver a trabalhar com o editor de blocos (Aparência → Editor, bloco de Navegação): clique em «+» para adicionar um link, escreva «login» ou «logout» na pesquisa e selecione «Login|Logout» das sugestões. O link será adicionado automaticamente com o URL correto. Também pode introduzi-lo manualmente: #lolmiloginout#.
O que fazer se o menu não alternar
A causa mais comum é a cache. Desative a cache para utilizadores autenticados nas configurações do seu plugin de cache: WP Rocket, Cloudflare APO, LiteSpeed. A segunda causa é outro plugin intercetar o redirecionamento. Verifique as configurações do seu plugin de membros ou segurança: muitos deles têm as suas próprias regras de redirecionamento pós-login que assumem prioridade.
Método 2: login e logout via código no functions.php
O plugin cobre a maioria dos cenários típicos. Mas, por vezes, precisa de lógica mais granular: redirecionamentos diferentes para funções diferentes, logout forçado sem confirmação, ocultar a barra de administração. É aqui que entra o functions.php.
Adicione todo o código abaixo através do plugin Code Snippets; isto é mais seguro do que editar o functions.php diretamente. Um erro de sintaxe não fará o site cair; simplesmente desativará o snippet.
Login com redirecionamento baseado na função
Este código redireciona os administradores para o painel de administração e todos os outros para uma página de conta de membro. Adicione-o ao Code Snippets ou ao functions.php do seu tema filho.
1 /** 2 * Redirect after login: admin → wp-admin, others → /account 3 */ 4 function sd_redirect_by_role( $url, $request, $user ) { 5 if ( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) { 6 if ( $user->has_cap( 'administrator' ) ) { 7 $url = admin_url(); 8 } else { 9 $url = home_url( '/account' ); 10 } 11 } 12 return $url; 13 } 14 add_filter( 'login_redirect', 'sd_redirect_by_role', 10, 3 );
Como funciona: o filtro login_redirect é acionado no momento do login. A função verifica a função através de has_cap('administrator') e devolve o URL apropriado. A prioridade 10 é padrão e 3 limita o número de argumentos aceites. Se o slug da sua página de conta for diferente de /account, substitua-o na linha home_url('/account').
Logout sem confirmação
Por defeito, o WordPress mostra uma página de confirmação quando clica num link de logout: «Tem a certeza de que quer sair?» Em dispositivos móveis, isto é especialmente irritante. Aqui está o código que remove a confirmação:
1 /** 2 * Logout without confirmation, redirect to home 3 */ 4 add_action( 'check_admin_referer', 'sd_logout_without_confirm', 10, 2 ); 5 function sd_logout_without_confirm( $action, $result ) { 6 if ( $action === 'log-out' && ! isset( $_GET['_wpnonce'] ) ) { 7 $redirect_to = isset( $_REQUEST['redirect_to'] ) 8 ? $_REQUEST['redirect_to'] 9 : home_url( '/' ); 10 $location = str_replace( '&', '&', wp_logout_url( $redirect_to ) ); 11 header( "Location: $location" ); 12 die; 13 } 14 }
Antes de adicionar isto, faça uma cópia de segurança completa do site. A função interceta a verificação de nonce durante o logout e realiza o redirecionamento imediatamente, contornando a página de confirmação. Após a instalação, teste-o: abra your-domain/wp-login.php?action=logout em modo anónimo; deverá ser redirecionado para a página inicial sem um ecrã intermédio.
Alguns plugins de segurança (Wordfence, Solid Security) sobrepõem o comportamento de logout. Se a confirmação ainda aparecer, desative a opção «confirmar logout» deles ou adicione o URL /wp-login.php?action=logout à lista de permissões.
Cenário: página de login personalizada em vez do wp-login.php
Se substituiu a página de login padrão por uma personalizada (por exemplo, através do MemberPress ou WooCommerce), precisa de redirecionar o acesso direto ao wp-login.php:
1 /** 2 * Replace wp-login.php with custom login page 3 */ 4 add_action( 'init', 'sd_custom_login_page' ); 5 function sd_custom_login_page() { 6 global $pagenow; 7 if ( ! is_user_logged_in() && 'wp-login.php' === $pagenow ) { 8 wp_redirect( home_url( '/login' ) ); 9 exit; 10 } 11 }
Substitua /login pelo slug da sua página de login. Isto é útil quando usa um plugin de painel de membros e não quer expor o formulário padrão do WordPress.
Como ocultar a barra de administração para todos exceto administradores
A barra de administração do WordPress no topo do site é útil apenas para quem gere o site. Os utilizadores comuns não precisam dela e esta polui a interface, especialmente se estiver a construir um painel de membros com um design limpo.
Desativar a barra de administração via código
Adicione isto ao Code Snippets ou ao functions.php do seu tema filho:
1 /** 2 * Hide admin bar for everyone except administrators 3 */ 4 add_action( 'after_setup_theme', 'sd_remove_admin_bar_for_non_admins' ); 5 function sd_remove_admin_bar_for_non_admins() { 6 if ( ! current_user_can( 'administrator' ) && ! is_admin() ) { 7 show_admin_bar( false ); 8 } 9 }
A função current_user_can('administrator') verifica a função e ! is_admin() garante que a barra permanece visível na própria área de administração, onde qualquer pessoa com acesso precisa dela.
Bloquear o acesso ao wp-admin
Ocultar a barra não é suficiente. Também precisa de bloquear o acesso a /wp-admin/ para quem não precisa dele:
1 /** 2 * Block access to wp-admin for non-administrators 3 */ 4 add_action( 'admin_init', 'sd_block_wp_admin_for_non_admins' ); 5 function sd_block_wp_admin_for_non_admins() { 6 if ( ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { 7 wp_redirect( home_url( '/restrict_user' ) ); 8 exit; 9 } 10 }
A condição DOING_AJAX é crítica: sem ela, bloqueará pedidos AJAX de plugins de painel de membros que os utilizadores precisam de executar a partir do seu perfil. Substitua a página /restrict_user por qualquer página de marcador de posição, por exemplo, a página inicial ou uma página com uma mensagem de «Acesso negado».
⁉️🤔 Perguntas frequentes
O plugin Login or Logout Menu Item não funciona com PHP 8.0, o que devo fazer?
Existe uma avaliação negativa no WordPress.org sobre incompatibilidade com PHP 8.0, de janeiro de 2026. No entanto, o plugin foi testado até ao WP 7.0 e mais de 20 000 instalações ativas confirmam o funcionamento estável em versões modernas de PHP. Se encontrar um erro: verifique a versão do plugin (deve ser a 1.3.2), desative outros plugins de redirecionamento, limpe a cache. Num site de teste com PHP 8.2, não foram encontrados problemas.
Posso fazer isto sem um plugin, usando apenas código?
Sim. O Método 2 neste artigo cobre totalmente o login, logout e redirecionamentos via
functions.php. O plugin é mais conveniente: configurações a partir do painel de administração sem editar ficheiros, suporte ao editor de blocos, atualizações automáticas. Se o site for simples e só precisar de um botão de login e logout, use o plugin. Se a lógica for complexa (redirecionamentos diferentes por função, várias páginas de login), use código.
O que devo fazer se o item de menu não aparecer no editor de blocos?
No bloco de Navegação, clique em «+» e escreva «login» na pesquisa (não «lolmiloginout»). Se o item não aparecer, verifique se o plugin está ativo e se a sua versão do WordPress é 6.0 ou superior. Para temas mais antigos sem o editor de blocos, use a interface clássica em Aparência → Menus.
Como configuro redirecionamentos para funções diferentes através do plugin?
O Login or Logout Menu Item não distingue entre funções; realiza um redirecionamento para todos os utilizadores. Para redirecionamentos baseados em funções, use o código do Método 2: a função
sd_redirect_by_rolefunciona mesmo que o item de menu tenha sido adicionado via plugin. O filtrologin_redirecté executado após o redirecionamento do plugin e sobrepõe-no.
Porque é que a página de confirmação de logout ainda aparece?
Alguns plugins de segurança (Wordfence, Solid Security) sobrepõem o comportamento de logout ao seu próprio nível. Desative a opção de confirmação de logout deles ou adicione o URL de logout à lista de permissões. O código do Método 2 é acionado antes da maioria dos plugins, mas não de todos; em casos raros, poderá precisar de configurar o próprio plugin de segurança.
Em que é que o WP-Recall difere do Login or Logout Menu Item?
O WP-Recall é um plugin de painel de membros completo: perfis, mensagens privadas, grupos, módulos de comércio. O login e logout estão integrados como parte do ecossistema. O Login or Logout Menu Item resolve exatamente uma tarefa: um botão dinâmico de login/logout no menu. Se precisar de um painel de membros completo com muitas funcionalidades, veja o WP-Recall ou o MemberPress. Se só precisa de um botão no menu, o Login or Logout Menu Item é mais leve e não traz bagagem extra.
O que usar no seu site: plugin ou código
A solução rápida para um site típico é o plugin Login or Logout Menu Item. Instale-o, preencha três campos em Configurações, adicione o item de menu. Tudo funciona em cinco minutos. Vinte mil instalações ativas e compatibilidade com o WP 7.0 confirmam que a ferramenta é madura e mantida.
Se a sua lógica de login não for trivial (redirecionamentos diferentes para funções diferentes, integração com um plugin de membros, página de login personalizada), use o código do Método 2. É mais flexível, mas requer cautela. Escreva código através do Code Snippets, não diretamente no ficheiro do tema. Um erro de digitação no functions.php e o site vai abaixo.
Uma combinação do plugin para o menu e código para redirecionamentos é o compromisso que usamos na maioria dos projetos. O plugin fornece uma gestão conveniente do item de menu e suporte ao editor de blocos. O código personalizado trata dos requisitos específicos de função e redirecionamento sem complicar as configurações do plugin.
Escolha com base na sua tarefa, não na lista de verificação de outra pessoa. Para um site simples com uma área de membros, o plugin é suficiente. Para um marketplace ou plataforma educacional, o código é essencial. Em qualquer caso, mantenha uma cópia de segurança antes de fazer alterações e teste numa cópia de staging.



