2014-02-19 4 views
0

Я получаю меню в WordPress с помощью этого кодаWordpress WP_Post идентификатор объект не соответствует идентификатору страницы в админке

$items = wp_get_nav_menu_items('Top menu', $args); 

Он возвращает массив с элементами, например, как показано ниже

[4] => WP_Post Object 
      (
       [ID] => 54 
       [post_author] => 1 
       [post_date] => 2014-02-19 20:36:53 
       [post_date_gmt] => 2014-02-19 20:36:53 
       [post_content] => 
       [post_title] => 
       [post_excerpt] => 
       [post_status] => publish 
       [comment_status] => open 
       [ping_status] => open 
       [post_password] => 
       [post_name] => 54 
       [to_ping] => 
       [pinged] => 
       [post_modified] => 2014-02-19 20:36:53 
       [post_modified_gmt] => 2014-02-19 20:36:53 
       [post_content_filtered] => 
       [post_parent] => 7 
       [guid] => http://localhost:8888/eastleigh/?p=54 
       [menu_order] => 6 
       [post_type] => nav_menu_item 
       [post_mime_type] => 
       [comment_count] => 0 
       [filter] => raw 
       [db_id] => 54 
       [menu_item_parent] => 27 
       [object_id] => 46 
       [object] => page 
       [type] => post_type 
       [type_label] => Page 
       [url] => http://localhost:8888/eastleigh/about/menus/ 
       [title] => Menus 
       [target] => 
       [attr_title] => 
       [description] => 
       [classes] => Array 
        (
         [0] => 
        ) 

       [xfn] => 
      ) 

Кажется, все хорошо, но когда я перехожу в Wordpress, страница не имеет этого идентификатора, на самом деле страниц нет (я зависал страницы в админе, чтобы проверить page_id). Она тем не менее соответствует object_id (46)

если я выливать массив get_pages то же страница имеет текущий идентификатор (46)

[5] => WP_Post Object 
    (
     [ID] => 46 
     [post_author] => 1 
     [post_date] => 2014-02-19 20:35:25 
     [post_date_gmt] => 2014-02-19 20:35:25 
     [post_content] => 
     [post_title] => Menus 
     [post_excerpt] => 
     [post_status] => publish 
     [comment_status] => open 
     [ping_status] => open 
     [post_password] => 
     [post_name] => menus 
     [to_ping] => 
     [pinged] => 
     [post_modified] => 2014-02-19 20:35:25 
     [post_modified_gmt] => 2014-02-19 20:35:25 
     [post_content_filtered] => 
     [post_parent] => 7 
     [guid] => http://localhost:8888/eastleigh/?page_id=46 
     [menu_order] => 0 
     [post_type] => page 
     [post_mime_type] => 
     [comment_count] => 0 
     [filter] => raw 
    ) 

Может кто-то пожалуйста объяснить то, что я здесь отсутствует?

Спасибо

+0

проверить разницу в post_type, проверить http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items – Lab

ответ

1

нав пункт меню ID не то же самое, после (страницы) ID. Сопоставимый идентификатор, который вы ищете, - это тот объект object_id, который вы уже указали.

+0

Ах, спасибо, Натан. – user3110793

0

Wordpress Menu технически «Посты» У них есть свой идентификатор и все (если вы не верите, что я перехожу проверить таблицу wp_posts в вашу базу данных wp). Разница между меню и страницами, и постом является малоценными базами данных «post_type»

Если вы хотите поместить меню в HTML использовать следующий синтаксис вместо:

<?php 
    wp_nav_menu(array(
     'menu' => 'MENU-NAME' 
     ) 
    ); 
?> 

Если вы создайте свою собственную тему, убедитесь, что вы зарегистрировали это меню с помощью файла functions.php.

+0

Спасибо, Джош, теперь это гораздо больше. – user3110793

+0

Надеюсь, что это поможет, желаю вам удачи. –

Смежные вопросы