J'aimerais créer une structure de menu où vous ne pouvez voir que l'élément de menu de la page actuelle, comme sur ce site Web http://www.bigspaceship.com/services/
Je cherche autour et j'ai la fonction suivante jusqu'à présent
<?php
$menu_items = wp_get_nav_menu_items( 'main-menu' );
foreach( $menu_items as $item ) {
print_r( $item ) ; // see what you can work with
// carry on
}
Comment puis-je réellement imprimer uniquement le nom de l'élément de menu pour la page actuelle? Je souhaite tout de même contrôler l'élément de menu à partir du tableau de bord, ce qui signifie que je veux pouvoir modifier le nom de chaque menu de l'administrateur et les mettre à jour de manière dynamique.
Merci pour toute aide.
object_id
contient dans chaque élément de menu l'ID de l'objet auquel l'élément de menu fait référence. Ce sera un post/page/CPT/identifiant de terme. S'il s'agit d'un lien personnalisé, l'ID fait référence à lui-même. (Si vous voulez savoir de quel type d'objet il s'agit, object
le contient.)
get_queried_object_id()
vous donnera l'ID de la page en cours.
Nous pouvons utiliser la fonction API wp_filter_object_list()
pour filtrer tous les éléments de menu où le object_id
ne correspond pas à l'objet demandé.
Il nous restera alors un tableau contenant un seul élément. Nous utilisons donc la variable current
de php afin que $this_item
ne contienne plus que l'objet d'élément de menu correspondant.
et finalement, title
contient le nom que nous avons donné à l'élément de menu.
$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;
Note- Je n'ai pas testé cela, alors j'espère que ça marche!