J'essaie d'obtenir tous les identifiants de ma navigation et de les convertir en chaîne afin de pouvoir les utiliser avec wp_query
pour obtenir les pages uniquement répertoriées dans le navigateur. Le code pour obtenir les identifiants:
$menu_name = 'primary';
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] )) {
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] );
$menu_items = wp_get_nav_menu_items($menu->term_id);
}
foreach ( $menu_items as $menu_item ) {
$numbers[] = $menu_item->ID;
}
$number = implode(',',$numbers);
Mais il renvoie les mauvais numéros. Lorsque je vais dans la zone d'administration et que je passe la souris sur les pages, le numéro qui apparaît dans la barre d'adresse en bas de l'écran ne correspond pas. Qu'est-ce que je fais mal?
Les éléments de menu sont stockés dans la table posts
avec un post_type
de nav_menu_item
. Par conséquent, ce que vous retournez est l’ID de l’élément de menu lui-même, et non ce qu’il indique.
L'ID de page/publication auquel l'élément de menu fait référence est stocké dans la table postmeta
, avec un post_id
qui correspond à l'élément de menu ID
et meta_key
= _menu_item_object_id
. Le moyen le plus simple d’obtenir le meta_value
(c’est-à-dire la page pointée par l’élément de menu) consiste à utiliser quelque chose comme ceci:
$numbers[] = get_post_meta( $menu_item->ID, '_menu_item_object_id', true );