É possível obter o item de menu atual como uma variável php?
Estou listando a categoria museus através do item de menu 'museus que apoiamos', então eu gostaria do bit 'museus que apoiamos' e o exibia em algum lugar?
Qualquer ajuda apreciada!
Isso é possível com a filtragem wp_nav_menu_objects
, que é o local mais fácil para verificar qual item é o item de menu atual, porque o WordPress já adicionou as classes para você .
add_filter( 'wp_nav_menu_objects', 'wpse16243_wp_nav_menu_objects' );
function wpse16243_wp_nav_menu_objects( $sorted_menu_items )
{
foreach ( $sorted_menu_items as $menu_item ) {
if ( $menu_item->current ) {
$GLOBALS['wpse16243_title'] = $menu_item->title;
break;
}
}
return $sorted_menu_items;
}
Agora você pode usar essa nova variável global em vez do título normal. Exemplo simples:
add_filter( 'single_cat_title', 'wpse16243_single_cat_title' );
function wpse16243_single_cat_title( $cat_title )
{
if ( isset( $GLOBALS['wpse16243_title'] ) ) {
return $GLOBALS['wpse16243_title'];
}
return $cat_title;
}
Obviamente, isso só funciona se você exibir o menu antes de exibir o título. Se você precisar mais cedo (talvez no <title>
elemento?), Primeiro renderize o menu e depois exiba-o mais tarde .
wpse16243_wp_nav_menu_objects
para recuperar o ID do menu atual. Mas não é consistente. Alternar entre a página inicial e um item de menu nem sempre me fornece o item de menu correto - é um tipo de "atraso". Alguma sugestão sobre como recuperar o ID do menu atual?wpse16243
? Eu vejo esse tipo estranho de nome bastante comum e me perguntando o que é isso tudo. Isenção de responsabilidade: Wordpress noob.WordPress Stack Exchange question number 16243
. Se as pessoas copiarem diretamente esse código, ele não entrará em conflito com outros plugins que podem compartilhar os mesmos nomes de função.Você pode usar
wp_get_nav_menu_items()
. Aqui está uma amostrafunction
:Em seguida, chamar o
function
com o nome do local do menu de navegação que você deseja usar:fonte
fonte
Não tenho certeza se sigo exatamente.
Os "Museus que apoiamos" são gerados por um título da postagem, título da página, título da categoria etc. (ou, se você estiver usando um menu de navegação personalizado, pode ser um título personalizado).
O que você está tentando fazer com este texto? Onde você está tentando exibi-lo? Suponho que você esteja tentando exibi-lo na página de índice de categoria (já que você indica
current-menu-item
). Nesse caso, basta ligar<?php single_cat_title(); ?>
para gerar o título da categoria.Se você precisar de informações adicionais sobre a categoria, poderá usar algo como:
O que disponibiliza as seguintes variáveis:
Se você estiver em outro lugar que não seja a página de índice de categoria, precisará passar o $ catid para essas funções.
EDITAR:
Como você indicou que "Museus que apoiamos" é um título de menu personalizado, a abordagem mais fácil seria renomear a categoria de "Museus" para "Museus que apoiamos" (nota: você pode deixar a lesma
museums
inalterada). No entanto, isso significaria que "Museus que apoiamos" seria exibido como o título da categoria em qualquer outro lugar em que possa ser exibido no seu modelo. Se isso é aceitável, então não se preocupe.Caso contrário, você precisará usar algo como
wp_get_nav_menu_items()
( ref do Codex ) para obter o título do item de menu específico.fonte
wp_get_nav_menu_items()
.