Czy można uzyskać bieżący element menu jako zmienną php?
Wymieniam kategorię muzeów poprzez pozycję menu „muzea, które wspieramy”, więc chciałbym dostać trochę „muzeów, które wspieramy” i wyświetlić je gdzieś?
Każda pomoc doceniona!
Jest to możliwe dzięki filtrowaniu wp_nav_menu_objects
, które jest najłatwiejszym miejscem do sprawdzenia, który element jest bieżącym elementem menu, ponieważ WordPress już dla ciebie dodał klasy .
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;
}
Możesz teraz używać tej nowej zmiennej globalnej zamiast normalnego tytułu. Prosty przykład:
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;
}
Oczywiście działa to tylko wtedy, gdy wyświetlasz menu przed wyświetleniem tytułu. Jeśli potrzebujesz go wcześniej (może w <title>
elemencie?), Powinieneś najpierw wyrenderować menu, a następnie wyświetlić je później .
wpse16243_wp_nav_menu_objects
do pobrania bieżącego identyfikatora menu. Ale to nie jest konsekwentne. Przełączanie między stroną główną a pozycją menu nie zawsze daje mi prawidłową pozycję menu - to rodzaj „opóźnień”. Wszelkie sugestie dotyczące tego, jak mogę pobrać bieżący identyfikator menu?wpse16243
? Widzę ten dziwny typ nazwy dość powszechny i zastanawiam się, o co w tym wszystkim chodzi. Uwaga: Wordpress noob.WordPress Stack Exchange question number 16243
. Jeśli ludzie bezpośrednio skopiują ten kod, nie będzie konfliktował z innymi wtyczkami, które mogą mieć takie same nazwy funkcji.Możesz użyć
wp_get_nav_menu_items()
. Oto próbkafunction
:Następnie wywołujemy
function
z nazwy lokalizacji w menu nawigacyjnym chcesz używać:źródło
źródło
Nie jestem pewien, czy dokładnie podążam.
„Obsługiwane przez nas muzea” jest generowane przez tytuł postu, tytuł strony, tytuł kategorii itp. (Lub, jeśli korzystasz z niestandardowego menu nawigacji, może to być niestandardowy tytuł).
Co próbujesz zrobić z tym tekstem? Gdzie próbujesz to wyświetlić? Zakładam, że próbujesz wyświetlić go na stronie indeksu kategorii (skoro to zaznaczasz
current-menu-item
)? Jeśli tak, wystarczy zadzwonić,<?php single_cat_title(); ?>
aby wyświetlić tytuł kategorii.Jeśli potrzebujesz dodatkowych informacji o kategorii, możesz użyć czegoś takiego:
Który udostępnia następujące zmienne:
Jeśli jesteś gdzieś inny niż kategoria Indeks Page, musisz zdać $ CatID do tych funkcji.
EDYTOWAĆ:
Ponieważ zaznaczyłeś, że „Muzea, które obsługujemy” to niestandardowy tytuł menu, najłatwiejszym sposobem byłoby zmienić nazwę kategorii z „Muzea” na „Muzea, które obsługujemy” (uwaga: możesz pozostawić ślimak
museums
bez zmian). Oznaczałoby to jednak, że „Obsługiwane przez nas muzea” będzie wyświetlane jako tytuł kategorii, gdziekolwiek indziej może zostać wyświetlony w szablonie. Jeśli jest to do zaakceptowania, nie martw się.W przeciwnym razie będziesz musiał użyć czegoś takiego jak
wp_get_nav_menu_items()
( Kodeks odniesienia ), aby zdobyć tytuł dla konkretnego elementu menu.źródło
wp_get_nav_menu_items()
.