Mostrar um menu diferente para quando o visitante não está autenticado no site.

Este exemplo só será útil se o seu tema possui o recurso de menu nativo WordPress desde a versão 3.0. Neste recurso, os itens do menu são adicionados através da interface do WordPress em Aparência > Menus.

Se o seu site gerencia vários inscritos, pode ser uma boa idéia criar um menu especial para quando tal usuário está autenticado.

Criando o menu no seu tema

No arquivo functions.php do seu tema, vamos adicionar dois menus para serem usados no tema: um menu para visitantes e usuários não-autenticados e outro menu somente para usuários autenticados.

register_nav_menus( array(
'logado' => '<strong>Menu todos os usuarios</strong><br /> Aqui devem ficar itens para a navega&ccedil;&atilde;o do site',
'nao-logado' => '<strong>Menu usuarios logados</strong><br /> Adicione mais itens neste menu'
) );

Menu ‘logado’:para quando o visitante está registrado e autenticado.
Menu ‘não-logado’: para visitantes comuns e usuários não-autenticados.

A função register_nav_menus é parecida com a que se usa para criar áreas de widgets. No exemplo mostrado acima, dois menus são criados e possuem uma breve descrição. Agora quando for ao painel em Aparência > Menus, haverá uma caixa com dois itens, que são os menus criados no código acima.

Mostrando o menu no tema

Agora temos que adicionar código para mostrar cada menu e, quando eles devem ser mostrados.

Procure pelo código de menu do seu tema, geralmente em hearder.php. No nosso exemplo:

<?php wp_nav_menu ('menu=topo&fallback_cb=&nbsp;&theme_location=topo&container_id=nav'); ?>

E substitua por:

<?php
if ( is_user_logged_in() ) {
wp_nav_menu ('menu=logado&fallback_cb=&nbsp;&theme_location=logado&container_id=nav');
} else {
wp_nav_menu ('menu=nao-logado&fallback_cb=&nbsp;&theme_location=nao-logado&container_id=nav');
};
?>

Ou se preferir algo mais legível:

<?php
if ( is_user_logged_in() ) {
wp_nav_menu(array('menu' => 'logado',
'fallback_cb' => '&nbsp;',
'theme_location' => 'logado',
'container_id' => 'nav'
));
} else {
wp_nav_menu(array('menu' => 'nao-logado',
'fallback_cb' => '&nbsp;',
'theme_location' => 'nao-logado',
'container_id' => 'nav'
));
};
?>

A funçao wp_nav_menu é usada para obter um menu que criado ou o menu padrão caso nenhum seja endereçado àquela área de exibição. A função is_user_logged_in é uma condicional e verifica se o usuário está autenticado, no nosso exemplo, se sim, mostrar o menu ‘logado’e se não, mostrar o menu ‘não-logado’.

Parâmetros

Qualquer destes parâmetros podem ser usados para cada menu criado.

  • menu – O menu desejado. Pode ser ID, slug e nome de um menu (ordem de coincidência). Padrão: nenhum.
  • menu_class – A classe CSS usada para o elemento ul que forma a lista. Padrão é .menu
  • menu_id – O identificador aplicado ao elemento ul. Padrão: o slug do menu, incrementado.
  • container – Container para envolver a lista, caso precise. Padrão: usa-se DIV
  • container_class – Classe aplicada ao container. Padrão ‘menu-{menu slug}-container’.
  • container_id – O identificador do container, se preciso. Padrão: nenhum.
  • fallback_cb – Se o menu não existir, o mostrar no lugar.
  • before – Texto ou código antes do texto de cada link.
  • after – Texto ou código depois do texto de cada link.
  • link_before – Texto ou código antes do link
  • link_after – Texto depois do link.
  • echo – Se mostra ou não o menu. Padrão: true (sim).
  • depth – Quantos níveis de hierarquia mostrar. Onde 0 (zero) significa todos os níveis. Padrão é 0.
  • walker – Permite um walker um indetificador CSS que acompanhará todos os elementos.
  • theme_location – o lugar do tema a ser. Deve antes se declarado com register_nav_menu() para permitir ao usuário selecionar o lugar dos menus que forem criados.

Itens dos menus

Temos os menus criados nos arquivos do tema, mas porque nada aparece?! Ora, você deve criar algum menu no Painel de Administração do WordPress. Como Administrador, vá em Aparência > Menus.

Você deve criar dois menus e adicionar os itens que quer no menu para visitantes e no menu para assinantes/registrados autenticados.

Depois, na caixa à esquerda, determine qual menu deve aparecer aonde. Neste código que usamos, podemos mudar um menu criado de uma área para outra, criar vários menus etc.

Conclusão

Este recurso do WordPress acabou com a maioria dos problemas relacionados à exibição de menus em temas. É possível criar uma variedade de estilos, até os que não usam listas para exibir itens já que podemos definir os elementos que mostrarão cada item.
Você pode aprender mais sobre estilos dos itens de menu no tema Fresh, disponível para download aqui no site. Este tema possui duas áreas de menus com estilos para itens ativos, mover o cursor do mouse sobre o item etc.

Sem estresse!

Precisa de ajuda com seu WordPress?

Entre em contato

Um comentário sobre "Menu para usuários autenticados e não-autenticados"

  1. Gregory

    Boa tarde. Fiz como está explicando, porém tem que deixar qual menu ativado. Não teve alteração nenhuma.

Comments are closed.