Je travaille actuellement sur un thème personnalisé. Dans ce thème, j’ai enregistré un menu avec register-nav-menu
, puis j’affiche le menu sur ma page Web à l’aide de la fonction wp_nav_menu
.
Cependant, j'aime récupérer uniquement la liste des éléments de menu (uniquement les noms des éléments de menu réels utilisés dans la zone wp-admin pour créer le menu, et sans html), et j'aimerais enregistrer cette liste d'éléments dans un tableau (c.-à-d. ne pas l'afficher).
Donc, un code psuedo ressemblerait à ceci
$menu_items = get_list_of_items($name_of_menu); // $name_of_menu is the result of register-nav-menu, and get_list_of_items is the psuedo function
foreach ($menu_items as $item) {
// do something with the item
}
Y a-t-il un moyen de le faire? Merci.
wp_get_nav_menu_items semblerait être exactement ce dont vous avez besoin. Il retourne un tableau d'objets de menu.
Comme @vancoder le mentionne, wp_get_nav_menu_items()
est la voie à suivre, mais je pense qu'une réponse plus détaillée serait plus utile pour les personnes à venir.
Cette fonction renvoie un tableau d'objets WP_Post Object
(vous accédez donc aux valeurs avec une flèche, par exemple $item->title
).
Pour un basic setup, vous pouvez utiliser les éléments suivants:
$menuLocations = get_nav_menu_locations(); // Get our nav locations (set in our theme, usually functions.php)
// This returns an array of menu locations ([LOCATION_NAME] = MENU_ID);
$menuID = $menuLocations['primary']; // Get the *primary* menu ID
$primaryNav = wp_get_nav_menu_items($menuID); // Get the array of wp objects, the nav items for our queried location.
Ensuite, vous pouvez simplement parcourir cette variable $primaryNav
, par exemple:
foreach ( $primaryNav as $navItem ) {
echo '<li><a href="'.$navItem->url.'" title="'.$navItem->title.'">'.$navItem->title.'</a></li>';
}