Obtener ID de página de los elementos de navegación

9

Estoy intentando obtener todos los ID en mi navegación y convertirlos en una cadena para poder usarlos con wp_query para obtener las páginas que solo aparecen en la navegación. El código para obtener los IDs:

$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);

Pero está devolviendo los números equivocados. Cuando voy al área de administración y muevo el mouse sobre las páginas, el número que aparece en la barra de direcciones en la parte inferior de la pantalla no coincide. ¿Qué estoy haciendo mal?

    
pregunta Jamie 06.04.2013 - 07:08

1 respuesta

11

Los elementos del menú se almacenan en la tabla posts con un post_type de nav_menu_item . Entonces, lo que está devolviendo es el ID del elemento de menú en sí, no a lo que apunta.

La ID de página / publicación a la que hace referencia el elemento de menú se almacena en la tabla postmeta , con un post_id que coincide con el elemento de menú ID y meta_key = _menu_item_object_id . La forma más fácil de obtener el meta_value (es decir, la página a la que apunta el elemento del menú) es usar algo como esto:

$numbers[] = get_post_meta( $menu_item->ID, '_menu_item_object_id', true );

    
respondido por el anu 06.04.2013 - 10:16

Lea otras preguntas en las etiquetas