$ post> ID выводит неверный идентификатор сообщения

Я задал вопрос о перечислении всех подстраниц:

Список всех подстраниц?

Но все вопросы были неправильными.

В любом случае, у меня теперь более простой вопрос.

global $post; echo $post>ID 

Работает отлично, но пока только на боковых панелях страниц. Когда он находится рядом с блочным циклом (в блоге), это сходит с ума, например, у блога есть идентификатор 216 (и $ post> ID в loop.php показывает 216), но $ post> ID на боковой панели показывает 87. Почему это происходит? Как это исправить?

Спасибо!

[редактировать]

У меня есть подозрение, что цикл и боковая панель включены в индексную страницу отдельно, а цикл получает другой идентификатор сообщения, чем боковая панель. Большой вопрос – как это изменить.

[править для Rarst]

  wp_reset_postdata(); global $post; $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); echo $children; 

Дает тот же результат. Он работает со страницами, а не с блогами. У меня нормальный цикл, как, например, в двадцать десятом.

Если я правильно понимаю, вы пытаетесь отобразить список дочерних страниц страницы в виджетах, если да, тогда сначала проверьте, используете ли вы страницу с условным тегом is_page() затем вы можете использовать $ wp_query-> get_queried_object_id () например, t31os указал, что ваша функция отображения виджетов должна выглядеть так:

 if (is_page()){ Global $wp_query; $current_page_id = $wp_query->get_queried_object_id(); $children = wp_list_pages('title_li=&child_of='.$current_page_id.'&echo=0'); echo $children; } 

Таким образом, только если вы находитесь на странице, этот код будет запущен

$post изменяется каждый раз, когда используются функции the_post() или setup_postdata() , которые находятся в большинстве петель.

Используйте wp_reset_postdata() чтобы вернуть исходные данные.

редактировать

$post содержит данные отдельного сообщения, настроенные во время цикла. Нет смысла использовать его в этом контексте.

Для обработки нескольких страниц вам нужно запросить их (например, с помощью get_pages() ) и работать с этим.