Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🔐 Botão de iniciar e terminar sessão no menu do WordPress: um guia passo a passo 2026

🔐 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

Página de configurações do plugin Login or Logout Menu Item no painel de administração do WordPress

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.php faz 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 */
4function 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}
14add_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 */
4add_action( 'check_admin_referer', 'sd_logout_without_confirm', 10, 2 );
5function 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 */
4add_action( 'init', 'sd_custom_login_page' );
5function 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 */
4add_action( 'after_setup_theme', 'sd_remove_admin_bar_for_non_admins' );
5function 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 */
4add_action( 'admin_init', 'sd_block_wp_admin_for_non_admins' );
5function 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_role funciona mesmo que o item de menu tenha sido adicionado via plugin. O filtro login_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.