Obtenha IDs de página de itens de navegação

9

Estou tentando obter todos os IDs na minha navegação e convertê-los em uma string para que eu possa usá-los com wp_query para obter as páginas listadas apenas na navegação. O código para obter os 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);

Mas está retornando os números errados. Quando vou para a área de administração e passo o mouse sobre as páginas, o número que aparece na barra de endereços na parte inferior da tela não corresponde. O que estou fazendo errado?

    
por Jamie 06.04.2013 / 07:08

1 resposta

11

Os itens de menu são armazenados na tabela posts com post_type de nav_menu_item . Então, o que você está retornando é o ID do próprio item de menu, não o que ele aponta.

O ID de página / postagem ao qual o item de menu se refere é armazenado na tabela postmeta , com um post_id que corresponde ao item de menu ID e meta_key = _menu_item_object_id . A maneira mais fácil de obter o meta_value (ou seja, a página sendo apontada pelo item de menu) é usar algo assim:

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

    
por anu 06.04.2013 / 10:16

Tags