Como Mostrar Menus Diferentes para Usuários Logados no WordPress

Você já percebeu como pode ser confuso para os visitantes do seu site WordPress quando eles estão logados, mas ainda veem botões de 'Login' ou 'Registrar' em todos os lugares? Ou talvez seus membros estejam com dificuldades para encontrar o painel de suas contas porque ele está escondido no menu.

Essas pequenas frustrações podem fazer com que até mesmo seus usuários mais leais se sintam como estranhos em seu próprio site.

E um menu personalizado pode fazer toda a diferença. Mostrar opções como "Minha Conta" ou "Sair" para usuários logados em vez de links genéricos faz com que seu site pareça mais acolhedor e profissional.

A boa notícia? Criar menus dinâmicos no WordPress é mais fácil do que você imagina.

Neste guia, mostraremos dois métodos simples para exibir menus diferentes para usuários logados, independentemente do seu nível de habilidade. 💡

Exibindo menus de navegação diferentes para usuários logados e não logados no WordPress

Por que Mostrar Menus Diferentes para Usuários Logados no WordPress?

Alterar diferentes áreas do seu site WordPress com base em seus visitantes e suas atividades faz com que seu site pareça personalizado para cada usuário.

Este conteúdo personalizado ajuda você a melhorar a experiência do usuário em seu site WordPress.

Agora, se você tem um site onde os usuários não precisam se registrar ou fazer login, então você provavelmente pode usar os mesmos menus de navegação em todo o seu site. No entanto, outros sites podem se beneficiar muito de mostrar menus personalizados para usuários logados.

Por exemplo, sites como uma loja online, uma plataforma de aprendizado online ou uma comunidade de site de assinatura WordPress podem se beneficiar de menus de navegação personalizados.

Um menu de navegação personalizado para usuários logados os ajuda a encontrar mais facilmente as coisas para as quais se inscreveram.

Por exemplo, um usuário em uma loja online pode gerenciar sua conta, ou um membro de uma comunidade paga pode renovar facilmente sua assinatura ou visualizar os cursos online exclusivos que comprou.

Menu diferente para usuários logados

Por padrão, o WordPress permite que você crie quantos menus de navegação quiser. No entanto, você só pode escolher exibir um menu em um local específico do seu tema WordPress.

Antes de configurar menus para usuários logados, você precisará criar dois menus de navegação separados. Um menu será para usuários logados e o outro para usuários não logados. Vamos começar.

⚠️ Apenas uma observação rápida! Os métodos que estamos compartilhando são projetados para pessoas que usam temas clássicos do WordPress. Se você estiver usando um tema de blocos com recursos de Edição Completa de Sites (FSE) do WordPress 5.8 em diante, este método pode não funcionar. 

Criando Menus para Usuários Logados e Não Logados no WordPress

Para criar menus separados para os dois tipos de usuários, você precisará acessar a página Aparência » Menus no painel do WordPress.

Se você já tem um menu de navegação que usa em seu site para todos os usuários, este pode ser o seu menu padrão.

Menu principal

Depois disso, você pode clicar no link ‘criar um novo menu’ para criar um novo menu personalizado para seus usuários logados.

Aqui, prossiga e adicione os itens de menu que você deseja mostrar aos usuários registrados ou logados. Por exemplo, você pode querer adicionar um link de logout ao seu menu.

No lado esquerdo da tela, você pode ver uma lista das páginas do seu site. Simplesmente marque a caixa ao lado de qualquer página que você deseja adicionar ao seu menu e clique no botão ‘Adicionar ao Menu’.

Menu de usuário logado

Você também pode arrastar e soltar os itens do menu no lado direito da tela para reorganizá-los.

Mais abaixo na página, você pode escolher um local para exibir seu menu. Mas você não precisa atribuir um local a este menu agora. Faremos isso mais tarde no artigo.

Não se esqueça de clicar no botão ‘Salvar Menu’ para armazenar suas alterações.

Para mais detalhes sobre como criar menus, confira nosso guia para iniciantes sobre menus de navegação do WordPress.

Agora, você está pronto para mostrar menus diferentes para usuários logados. Aqui está um breve resumo de todos os métodos que abordaremos neste guia:

Pronto para criar uma experiência mais personalizada? Vamos lá! 🌟

Método 1. Mostrar Menus Diferentes para Usuários Logados no WordPress Usando um Plugin

A maneira mais fácil de mostrar menus diferentes para usuários logados é usar o plugin Conditional Menus. Então, vamos instalá-lo e ativá-lo primeiro.

Para mais detalhes, você pode ver nosso guia passo a passo sobre como instalar um plugin do WordPress.

Após a ativação, você precisará navegar para Aparência » Menus no seu painel do WordPress. Em seguida, mude para a aba ‘Gerenciar Locais’.

A partir daqui, você verá a lista de locais de menu disponíveis definidos no seu tema do WordPress e os menus que estão sendo exibidos atualmente.

Por exemplo, nosso local ‘Menu Principal’ atualmente exibe um ‘Menu Principal’.

Gerenciar locais de menu

Agora, precisamos dizer ao plugin para mostrar um menu diferente quando uma determinada condição for atendida.

Para fazer isso, vamos clicar no link ‘+ Menu Condicional’. Em seguida, você pode selecionar o menu de navegação que deseja mostrar aos usuários logados no menu suspenso.

Selecionar menu de usuário logado

Em seguida, você vai querer clicar no link ‘+ Condições’.

Isso abrirá um pop-up onde você verá várias condições para escolher.

Selecionar usuário logado como a condição

Simplesmente marque a caixa ao lado da opção ‘Usuário logado’ e, em seguida, clique no botão ‘Salvar’.

Agora você pode visitar seu site para ver o menu de usuário logado em ação. Você também pode sair do seu painel do WordPress para ver o menu de navegação que será mostrado a todos os outros usuários.

Menu diferente para usuários logados

Método 2. Selecionar Manualmente o Menu para Usuários Logados no WordPress Usando Código

Este método exige que você adicione código ao seu site WordPress. Se você nunca fez isso antes, confira nosso guia sobre como copiar e colar snippets de código no WordPress.

Em geral, os blogs dirão que você precisa adicionar um snippet de código ao arquivo functions.php do seu tema ou a um plugin específico para o site. No entanto, não recomendamos este método, pois ele pode potencialmente causar problemas com o seu site.

Em vez disso, você pode usar o plugin WPCode.

WPCode permite que você adicione snippets de código personalizados ao seu site sem editar os arquivos do tema diretamente. Ele também ajuda a gerenciar esses snippets e garante que eles sejam executados com segurança, minimizando o risco de quebrar seu site.

ℹ️ Observação: Em todas as nossas marcas parceiras, o WPCode tem sido nossa ferramenta preferida para adicionar snippets personalizados para estender a funcionalidade de cada site. Se você estiver curioso para saber mais, pode ler nossa análise completa do WPCode.

Para começar, vamos instalar o plugin WPCode. Você pode usar a versão gratuita do WPCode, pois ela possui todos os recursos que você precisa para mostrar menus diferentes para usuários logados.

Mas se você quiser acesso a recursos avançados como histórico de revisão de código e agendamento de quando os snippets entram no ar, considere fazer o upgrade para o WPCode Pro.

Uma vez instalado, você desejará navegar até Snippets de Código » + Adicionar Snippets.

Botão Adicionar Snippet no WPCode

Isso abrirá a galeria de snippets de código do WPCode.

A partir daqui, você pode clicar no botão ‘+ Adicionar Snippet Personalizado’.

Botão Adicionar Snippet Personalizado no WPCode

Você chegará ao editor de texto do WPCode.

O próximo passo é adicionar um título ao seu snippet de código e escolher ‘Snippet de HTML’ no menu suspenso ‘Tipo de Código’.

Adicionando título do snippet e escolhendo o tipo de código no WPCode

Uma vez feito, simplesmente copie e cole o seguinte código no campo ‘Prévia do Código’:

function my_wp_nav_menu_args( $args = '' ) {
if( is_user_logged_in() ) {
// Logged in menu to display
$args['menu'] = 43;

} else {
// Non-logged-in menu to display
$args['menu'] = 35;
}
return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

Veja como isso pode parecer no seu editor WPCode:

O snippet de HTML personalizado na Visualização de Código do WPCode

Certifique-se de substituir 43 e 35 pelos IDs dos menus de navegação que você criou anteriormente.

Você pode encontrar o ID de um menu de navegação selecionando-o na página ‘Menus’. Você verá o número do ID do menu na barra de endereço do seu navegador.

Encontrar o ID do menu de navegação

Assim que tiver certeza de que todos os detalhes estão corretos, clique no botão azul ‘Salvar Snippet’.

E é isso!

Dica Bônus: Mais Casos de Uso de Lógica Condicional em Menus do WordPress

Quando se trata de navegação, a lógica condicional pode fazer mais do que apenas mostrar menus diferentes para usuários logados. Aqui estão alguns exemplos rápidos:

  • Mostrar Menus Diferentes com Base na Função do Usuário: Você pode exibir um menu diferente para administradores versus colaboradores. Por exemplo, mostre opções exclusivas para administradores, como configurações do site ou gerenciamento de usuários, para administradores, enquanto oferece links de navegação gerais para colaboradores ou outras funções de usuário.
  • Mostrar Menus Diferentes em Páginas Diferentes: Quer um menu exclusivo na sua página de blog ou nas páginas de produtos? A lógica condicional permite que você crie menus específicos para cada um, mantendo a navegação adaptada ao conteúdo.
  • Ocultar Navegação em Landing Pages: Landing pages funcionam melhor sem distrações. Use a lógica condicional para ocultar seu menu de navegação e focar a atenção no seu call-to-action, como um formulário de inscrição ou oferta de produto.

Para saber mais, você pode consultar nosso guia sobre como adicionar lógica condicional a menus no WordPress.

FAQs: Mostrar Menus Diferentes para Usuários Logados no WordPress

Ainda tem dúvidas sobre como mostrar menus diferentes para usuários no WordPress? Aqui estão algumas respostas rápidas para ajudar você:

Posso mostrar menus diferentes com base nas funções do usuário?

Com certeza. Você pode exibir menus exclusivos para Administradores, Editores ou qualquer outra função de usuário personalizada em seu site. O plugin Conditional Menus oferece uma opção direta para configurar isso, o que é perfeito para adaptar a navegação para os membros da sua equipe.

É melhor usar um plugin ou adicionar código manualmente?

Para a maioria dos usuários, recomendamos o uso de um plugin como Conditional Menus ou WPCode. Essas ferramentas facilitam a exibição de menus diferentes sem mexer nos arquivos do seu tema.

WPCode é especialmente útil se você prefere a flexibilidade de usar código. Ele permite adicionar snippets de PHP personalizados com segurança e gerenciá-los a partir do seu painel do WordPress – sem a necessidade de editar o functions.php diretamente.

A codificação manual ainda é uma boa opção para desenvolvedores, mas para todos os outros, um plugin é a escolha mais segura e amigável para iniciantes.

Posso ocultar o menu de navegação em páginas específicas?

Sim, você pode usar a mesma lógica condicional para ocultar seu menu de navegação em páginas específicas. Esta é uma estratégia popular para landing pages, pois remove distrações e mantém o visitante focado na sua chamada para ação.

Recursos Adicionais: Funções de Usuário do WordPress e Navegação do Site

Esperamos que este artigo tenha ajudado você a aprender como exibir facilmente diferentes menus de navegação para usuários logados no WordPress. Em seguida, você também pode consultar nossos guias sobre:

Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

101 CommentsLeave a Reply

  1. Descobri que este código não seria executado a menos que eu escolhesse o tipo de código php. Quando mudei de HTML para PHP, foi fantástico!

  2. Clear and actionable guide!
    Thank you for this comprehensive guide on showing different menus to logged-in users in WordPress.
    I particularly appreciate the two methods you’ve outlined – using the Conditional Menus plugin and the manual code approach.
    You have certainly given me some ideas to enhance my own WordPress sites. Thanks again WPBeginner :)

  3. Funciona muito bem! Tenho o problema de ter dois menus no topo: um menu de cabeçalho e o menu principal. Quando uso o código e o usuário está logado, os menus acima mudam para o menu do usuário logado. Como posso ajustar o código para que o menu de cabeçalho permaneça o mesmo?

  4. Seria muito mais fácil se você pudesse fazer isso para um item de menu específico em vez de um menu inteiro. O que alguém com 499 itens de menu teria que fazer?

    • Não recomendaríamos tantos itens de menu, pois seria muito para alguém navegar, o que provavelmente causaria um problema de SEO se os links do seu menu não agregassem valor aos seus visitantes.

      Admin

  5. isso é muito útil, mas há uma maneira de exibir um nome de usuário e avatar que possam atuar como um contêiner para outros itens de menu de perfil, como um menu suspenso?

  6. O caminho que você mostrou é bom e serve apenas para exibir menus personalizados. Mas e se eu quiser mostrar meu conteúdo para um usuário logado específico com base em seus interesses? Isso é detalhado, como em vários sites de ofertas, quando fazemos login e salvamos nossos interesses, no momento seguinte vemos ofertas apenas sobre esse tópico específico. Podemos tornar isso possível usando plugins do WordPress.

  7. Olá, obrigado pelo ótimo trabalho. Tenho uma pergunta sobre múltiplos papéis de usuário.

    Então, eu tenho dois menus principais, Menu 1 e Menu 2.

    Eu gostaria que todos os usuários (logados ou não) vissem o menu principal, a menos que tenham a função de usuário de “Alt”, caso em que o Menu 1 é substituído pelo Menu 2.

    Como eu faria isso?

  8. @ERICLEE Você pode criar um tema filho para evitar que isso aconteça. Acabei de adicionar este código e preciso fazer a mesma coisa.

  9. é possível adicionar os menus no perfil do assinante, exceto na página inicial, essas páginas de menu não aparecem na página inicial, apenas em cada perfil de assinante. se for possível, por favor me guie e me diga como usar algum plugin para isso.

  10. é possível adicionar os menus no perfil do assinante em um site wp, se for possível, por favor, alguém me guie sobre o que fazer e como usar algum plugin para este trabalho.

  11. Como o mesmo pode ser alcançado em um site de membros multilíngue? Por exemplo, mostrar um menu diferente para usuários logados em inglês e um menu diferente para usuários logados em alemão?

  12. Primeiro pensei em um plugin. Tenho que parar de pensar assim.
    Então vi seu post e fiquei convencido.
    Obrigado por postar isso, você me ajudou muito bem.

  13. Olá,

    Isso funciona totalmente!
    Mas também muda meu menu de rodapé.. existe uma maneira de meu menu de rodapé ficar o mesmo?

  14. Então, eu tenho 2 menus. Um para o público e outro que eu gostaria que os funcionários vissem quando estivessem logados. O menu do funcionário substituiria o menu principal apenas quando um funcionário estivesse logado.

    Aqui está o que estou usando atualmente no meu arquivo functions.php

    // Define a Role como uma classe de corpo

    function add_role_to_body( $classes ) {

    $user = wp_get_current_user();

    $user_roles = $user->roles;
    foreach( $user_roles as $role ) {
    $classes[] = ‘role-‘ . $role;
    }

    return $classes;

    }

    add_filter( ‘body_class’, ‘add_role_to_body’ );

    ***Aqui está o que adicionei para CSS***

    /* Primeiro, oculte os itens do menu para usuários que não são "funcionários" */
    #top-menu li.menu-for-employee {
    display: none;
    }

    /* Mostre os itens do menu para o usuário "funcionário" */
    .role-employee #top-menu li.menu-for-employee {
    display: initial;
    }

    Quando faço login como funcionário, ambos os menus estão aparecendo.

    Agradeço antecipadamente.

  15. não está funcionando para mim. Ele exibe o menu padrão depois que adiciono este código, até mesmo meu menu principal desapareceu.

  16. Olá pessoal,

    Um bom tutorial, mas eu estava me perguntando se você poderia usar a mesma abordagem para substituir um menu responsivo em um determinado tamanho de tela?

    Eu tenho dois menus, mas preferiria ter apenas um menu responsivo a 768 px, substituindo um menu por outro.

    Obrigado

  17. Ótimo trabalho com seus guias. Estou construindo meu primeiro site no WordPress e estou achando seu site incrivelmente útil para me guiar, obrigado.

    Eu realmente queria mostrar menus diferentes para usuários logados (como ‘editar perfil’) e para usuários deslogados, e isso me trouxe até aqui. O código que você compartilhou funciona bem para mim. Agora tenho dois menus que estão aparecendo bem. No entanto, a última parte do código, adicionar filtro de string, acredito que está me atrapalhando um pouco. Agora, outro menu está aparecendo sob o widget da barra lateral. O menu ‘logado’. Estou usando o tema sydney e tentei sem sucesso remover este menu desnecessário. Alguma ideia de como posso fazer com que ele não seja exibido?

  18. Olá, você pode me ajudar por favor? Tenho outro problema, por favor? Preciso ocultar um menu para todos e permitir que apenas os fornecedores vejam o que preciso fazer, por favor? Qual é o código específico que devo usar, por favor?

  19. esta função acima define o menu secundário, tudo o que quero é definir apenas o menu do cabeçalho?
    como fazer isso

  20. este é o código para substituir o menu existente pelo menu do usuário logado adicionando a localização top-menu e com o menu loggedin não há necessidade de else statement com isso

    add_filter( ‘wp_nav_menu_args’, function ( $args )
    { if( is_user_logged_in() && $args[‘theme_location’] === ‘top-menu’ ) { $args[‘menu’] = ‘loggedin’; } return $args; });

  21. ———————————————————–
    function my_wp_nav_menu_args( $args = ” ) {

    if( is_user_logged_in() ) { $args[‘menu’] = ‘logged-in’; } else { $args[‘menu’] = ‘logged-out’; } return $args; } add_filter( ‘wp_nav_menu_args’, ‘my_wp_nav_menu_args’ );
    ———————————————————–

    Agora, como faço para funcionar com

    —————————————————

    ———————————————————————————————————————-

    Por favor, me aconselhe

    • Você pode bloquear páginas para ocultá-las de usuários deslogados. Existem vários plugins que tornam isso muito fácil. Users Ultra vem à mente.

  22. Tudo funcionou perfeitamente.

    No entanto, ainda tenho o problema de um menu principal repetido na seção de menu de navegação secundária que não consigo remover (não tenho um menu secundário configurado).

    • Estou tendo exatamente o mesmo problema. A alteração reflete no local do menu secundário do nada e eu também não tenho um menu secundário configurado. :/ Por favor, me aconselhe como lidar com isso.

      Agradeço antecipadamente.

  23. ESCUTEM!!!

    A maioria de nós usa temas.
    Então, primeiro vá para o functions.php do seu tema.
    Pesquise por 'navigation' como palavra-chave.

    No caso do tema Shopkeeper..

    ==================================================================
    register_nav_menus( array(
    ‘top-bar-navigation’ => __( ‘Navegação da Barra Superior’, ‘shopkeeper’ ),
    ‘main-navigation’ => __( ‘Navegação Principal’, ‘shopkeeper’ ),
    ‘footer-navigation’ => __( ‘Navegação do Rodapé’, ‘shopkeeper’ ),
    ===================================================================

    É assim que você se parece.. então escolha o que é primário. No meu caso, é “Navegação da Barra Superior”, por isso usei “top-bar-navigation”.

    Eu usei o seguinte código e funcionou perfeitamente!!!

    Esta é a minha maneira de agradecer ao autor.

    Bom dia!!

  24. Eis o que funcionou para mim com o WP. Usei isso para criar um menu principal específico para usuários logados do Buddypress. Isso NÃO afetará meu menu de rodapé OU menu de mídia social para quaisquer visitantes, então todos verão os mesmos menus secundários, independentemente de estarem logados ou não. Isso é baseado em todos os comentários acima (HT para Fransiska!).

    Adicionei o seguinte ao arquivo functions.php do meu Child Theme:

    // ALTERAR MENU PRINCIPAL =SOMENTE= SE O MEMBRO ESTIVER LOGADO

    function my_wp_nav_menu_args( $args = '' ) { if ($args['theme_location'] == 'primary') { if( is_user_logged_in()) { $args['menu'] = 'logged-in'; }else{ $args['menu'] = 'logged-out'; } } return $args; }

    add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

  25. Olá, Adicionei este código (provavelmente de forma errada) no meu functions.php dentro do meu tema no editor do wordpress e agora tenho um erro constante de servidor 500. Mesmo depois de remover o código.

    Antes disso, tentei criar um plugin específico para o site, mas não funcionou. Você poderia me dizer se o trecho requer um colchete de abertura e fechamento? Se sim, como faço isso? Meu provedor não pode me ajudar agora e eles estão me pedindo para pagar um programador para me ajudar por 50Eu por hora. Por favor, me ajude. É urgente. Eu ainda estou logado no wordpress, mas o que quer que eu clique, recebo o erro 500 com este erro específico. PHP Parse error: syntax error, unexpected '}' in line 1194. Isso acontece porque colei o trecho após todo o texto no arquivo functions.php. Em seguida, removi o trecho para ver se isso resolveria, via editor e FTP, e ainda recebo o erro. Aguardo sua resposta. Atenciosamente

    • Depende de onde você está adicionando o código. Se houver uma tag PHP de fechamento antes dela, você precisará adicionar uma tag de início PHP como <?php

      Se este código for a última coisa no arquivo de funções, você não precisará adicionar uma tag de fechamento.

      Admin

  26. Se você tiver vários locais de menu e quiser aplicar menus diferentes para cada local, você pode usar o código abaixo:

    function my_wp_nav_menu_args( $args = ” ) {

    // Localização do menu principal
    if( ‘primary-main’ == $args[‘theme_location’] ) {

    if( is_user_logged_in() ) {
    $args[‘menu’] = ‘Primary-Logged-In’;
    } else {
    $args[‘menu’] = ‘Primary-Logged-Out’;
    }

    return $args;
    }

    // Localização do menu secundário
    if( ‘secondary-menu’ == $args[‘theme_location’] ) {

    if( is_user_logged_in() ) {
    $args[‘menu’] = ‘Secondary-Logged-In’;
    } else {
    $args[‘menu’] = ‘Secondary-Logged-Out’;
    }

    return $args;

    }

    }
    add_filter( ‘wp_nav_menu_args’, ‘my_wp_nav_menu_args’ );

    • Olá Gaurang,
      Estou curioso para saber por que você acha que usar o plugin é melhor do que codificar o arquivo functions.php? Me disseram há um tempo para observar quantos plugins são realmente usados em um site WordPress, e o código acima parece simples o suficiente; menos ter que monitorar toda vez que seu tema é atualizado....

      Obrigado,

  27. isso é incrível, experimentei. funciona. mas eu também gostaria de redirecionar por função
    isso é simples ou muito mais difícil

  28. Obrigado. Trabalhando com funções de menu pela primeira vez.

    Criando o plugin WTG Portal Manager, que permitirá definir um portal muito rapidamente. Cada portal tendo seu próprio menu. O plugin torna o relacionamento entre portal e menu mais claro, além de oferecer outras opções exclusivas.

  29. Obrigado pela ajuda.. mas e se eu quiser mostrar usuários diferentes posts diferentes no meu site.. existe alguma maneira de fazer isso usando código??

Deixar uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.