Como posso exibir um menu apenas em determinadas páginas?


10

Em vez de usar widgets da barra lateral para dizer em que página eles devem estar visíveis, eu gosto de escolher as configurações do menu para aparecer em páginas específicas.

Maneira padrão do Wordpress:

Como parece padrão

Portanto, projetos é uma página e tem algumas subpáginas. Mas e se eu tiver mais 10 dessas páginas e subpáginas com a mesma situação.

Gostaria de adicionar uma configuração extra (uma lista das páginas de nível superior):

Onde eu quero a configuração

Mas não consigo encontrar documentação, ações, filtros etc. quando essas configurações são carregadas.


Eu acho que depende do seu tema. Mas, como ponto de partida, o codex.wordpress.org/Navigation_Menus deve ajudar!
Sri

11
Eu já vi esse link muitas vezes, não há informações sobre como adicionar configurações a um menu. Apenas criar e exibir um menu personalizado ...

Ai. Eu acho que é uma opção nativa do Joomla, aparentemente não no WordPress. Para o seu site, você pode criar arquivos de saída / category / pages.php personalizados e, em seguida, adicionar um menu personalizado exclusivo, mas isso é uma dor total no pescoço. Você teria quatro páginas .php de saída e quatro menus exclusivos, um para cada seleção acima. Uma maneira fácil de implementar é usar os widgets da barra lateral como sua principal ferramenta de navegação. a ferramenta de widget de menu personalizado é bastante simples. Crie um menu para cada página, supondo que você tenha modelos exclusivos para cada uma. Observe que a barra lateral não é a melhor palavra. Você pode colocar um widget em qualquer lugar.
zipzit

Estou ciente das barras laterais e widgets. Essas pequenas partes do site que também não estão conectadas a uma página. Não quero usar barras laterais e widgets e os desabilitei porque não uso nenhum deles. Enfim, acho que os locais do menu são configurações do menu, não uma configuração de um widget que contém um menu.

Sua pergunta é apenas "Como adiciono configurações de menu personalizadas?" ou também é "Como uso as configurações personalizadas do menu para exibir um menu apenas em determinadas páginas?"?
Engelen

Respostas:


3

Essa é uma boa opção, mas eu concordo com o sri, agora isso realmente depende do seu tema. Você pode fazer uma solução alternativa através de is_page () . Você precisa escrever algo assim no arquivo de tema page.php :

<?php
    if (is_page('projects')) {
        if ( is_active_sidebar( 'sidebar-navigation' )) {
            dynamic_sidebar( 'sidebar-navigation' );
        }
    }
?>

Se você deseja mostrar a barra lateral em outras páginas também, use a lógica ou assim:

if (is_page('projects') || is_page('home') || is_page('post-page'))

Não conheço uma solução melhor, mas essa é uma prática muito ruim no mundo da codificação. Eu estou pensando que, pelo menos, talvez percorrer uma matriz ou algo assim, em seguida, executar a troca de menu. Definitivamente aprecio a resposta. Sigh
BRogers

1

Eu acho que usar um plug-in para isso é melhor, então você pode manter a funcionalidade mesmo se mudar de tema no futuro. Confira este plugin. Ele faz o que você quer, mas um pouco diferente do que você zombou.

https://wordpress.org/plugins/page-specific-menu-items/

Se isso ajudar, vote ou aceite como resposta. Obrigado!


Eu tentei este plugin. Com este plug-in, você pode selecionar apenas um menu para um tipo de postagem específico. Quero selecionar o menu para cada página.

Se você possui apenas um menu no site e deseja apenas ocultar certos links nesse menu quando um usuário está em uma determinada página, este plugin faz isso. Depois de selecionar o tipo de postagem em que você deseja que o menu (página seja o que você deseja ou mais), vá para editar uma página e verifique os links que deseja ocultar. Este outro faz o caminho oposto. Você seleciona um menu de um METABOX na tela de edição da página, para que você precisar de vários menus à escolha: wordpress.org/plugins/ce-wp-menu-per-page
Mark.C

1

É assim que você pode fazer isso em Twenty Twelve Themes do header.php copiado para um tema filho.

<?php if ( is_page('projects') ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'conditional-menu-name', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'Primary', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

Crie um novo menu com os itens que deseja exibir e troque o nome do menu condicional no código acima pelo nome do seu menu.

os nomes de menu_class podem precisar ser alterados para outros temas que não sejam vinte e doze.

Fonte


1

Eu sei que esse tópico é antigo, mas no caso de alguém precisar procurar respostas para isso, gostaria de sugerir os menus condicionais do themify https://themify.me/conditional-menus . Você escolhe qual menu usar, por página, categoria, meta, tudo. e é grátis :) espero que isso ajude


0

Se você deseja reativar seus widgets e deseja uma solução simples, use um plug-in chamado Widgets da Rede de Display. Eu usei isso e use a parte do texto onde você pode adicionar links para onde deseja ir. Funciona se os links estão no seu próprio site ou em outro site. Há um espaço abaixo do texto, onde você pode escolher quais páginas exibir ou ocultar. Você ainda pode remover os widgets que não usa.

Eu brinquei com os menus por um bom tempo antes de procurar e encontrar este plugin. Isso funciona bem.

Você pode encontrá-lo na seção Plugins do WordPress.org.


Muito obrigado! Mas não estou procurando um plugin extra. E não uso widgets, pois essas partes flutuantes de sites são muito difíceis de entender para alguns de meus clientes.

0

Uma opção seria criar modelos personalizados para cada menu que você possui. (Isso se refere à caixa de seleção dos locais dos temas). Em todas as páginas, você escolhe o modelo que deseja que ele use e também usa o menu associado a esse modelo.

https://codex.wordpress.org/Page_Templates

Ele fornece o mesmo resultado que eu acho que você está procurando, mas, em vez de dizer a cada menu em que página ele aparece, você estará dizendo a cada página qual menu será exibido. Um benefício adicional de fazê-lo dessa maneira é que não há como dizer acidentalmente que dois menus estejam no mesmo local ao mesmo tempo.


Sim, eu olhei para isso. Mas o desenvolvedor nunca sabe quantos menus o usuário precisa. Então, eu tenho que criar muitos modelos para cobrir todos eles. template_a.php, template_b.php, template_c.phpEtc

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.