$сообщение>ИДЕНТИФИКАТОР отображает неправильный идентификатор записи
Я уже задавал вопрос о перечислении всех подстраниц раньше:
Но все вопросы были неправильными.
В любом случае, теперь у меня есть более простой вопрос.
global $post;
echo $post>ID
Работает абсолютно нормально, но только на боковых панелях страниц. Когда он находится рядом с циклом блога (в разделе блога), он сходит с ума, например, у блога идентификатор 216 (и $post>ИДЕНТИФИКАТОР в loop.php показывает 216), но идентификатор $post>на боковой панели показывает 87. Почему это происходит? Как это исправить?
Спасибо вам!
[редактировать]
У меня есть подозрение, что цикл и боковая панель включены в страницу индекса отдельно, и цикл получает другой идентификатор записи, чем боковая панель. Большой вопрос в том, как это изменить.
[редактировать для Rarst]
wp_reset_postdata();
global $post;
$children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0');
echo $children;
Дает тот же результат. Он работает со страницами, а не с блогом. У меня есть обычная петля, как, например, в Двадцать десятом.
2 answers
Если я правильно понимаю, вы пытаетесь отобразить список дочерних страниц страницы в виджет, если да, то сначала проверьте, если вы находитесь на странице, через условный тег 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()
) и работать с ними.