web-dev-qa-db-fra.com

Comment obtenir le nom de l'élément de menu de la page actuelle au lieu de la liste complète des éléments de menu

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.

1
cmsdeployed
  1. 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.)

  2. get_queried_object_id() vous donnera l'ID de la page en cours.

  3. 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é.

  4. 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.

  5. 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!

6
Milo