Cómo obtener solo el nombre del ítem de menú de la página actual en lugar de la lista completa
Me gustaría construir una estructura de menú donde solo se vea el ítem del menú correspondiente a la página actual, como en este sitio web http://www.bigspaceship.com/services/
He buscado y tengo la siguiente función hasta ahora:
<?php
$menu_items = wp_get_nav_menu_items( 'main-menu' );
foreach( $menu_items as $item ) {
print_r( $item ) ; // Ver qué datos están disponibles
// continuar
}
¿Cómo puedo imprimir solo el nombre del ítem de menú para la página actual? Quiero seguir controlando los ítems del menú desde el panel de administración, es decir, poder cambiar el nombre de cada elemento del menú en el admin y que se actualicen dinámicamente.
Gracias por cualquier ayuda.
Dentro de cada elemento del menú,
object_id
contiene el ID del objeto al que se refiere el elemento del menú. Este será un ID de post/página/CPT/término. Si es un enlace personalizado, el ID se refiere a sí mismo. (Si deseas saber qué tipo de objeto es,object
contiene esa información.)get_queried_object_id()
te dará el ID de la página actual.Podemos usar la función de la API
wp_filter_object_list()
para filtrar cualquier elemento del menú donde elobject_id
no coincida con el objeto consultado.Luego nos quedaremos con un arreglo que contiene un solo elemento, así que usamos
current
de PHP para que$this_item
ahora contenga solo el objeto del elemento del menú que coincide.y finalmente,
title
contiene el nombre que le hemos dado al elemento del menú.
$menu_items = wp_get_nav_menu_items( 'main-menu' );
$this_item = current( wp_filter_object_list( $menu_items, array( 'object_id' => get_queried_object_id() ) ) );
echo $this_item->title;
Nota: No he probado esto, ¡así que espero que funcione!
