Возможно, я просто делаю это неправильно, поэтому не стесняйтесь, дайте мне знать, как бы вы решили эту проблему.
У меня в основном сайт на основе страниц, но есть несколько «страниц», где мой контент поступает из пользовательского query_posts()
вызова. На всех этих страницах я хочу использовать wp_list_pages()
для создания поднавигации. Это прекрасно работает, когда я нахожусь на обычной странице, но когда я нахожусь на «странице» с query_posts()
контентом, это вообще не работает.
Вот пример того, что я имею в виду под «страницей». Это файл темы с именем page-media.php
:
<?php get_header(); ?>
<?php query_posts('category_name=in-the-media'); ?>
<?php get_template_part('loop', 'index'); ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Поднавигация происходит в sidebar.php
, так что это происходит после цикла.
Вот как я создаю свое меню:
if($post->post_parent)
{
$children = wp_list_pages('title_li=&child_of=' . $post->post_parent . '&echo=0');
}
else
{
$children = wp_list_pages('title_li=&child_of=' . $post->ID . '&echo=0');
}
Затем я печатаю $children
позже в формате <ul>
. Это отлично работает на странице или ее подстранице, но ничего не отображает на странице, где я вызвал query_posts()
.
Правильно ли я подхожу к этому? Есть что-то, что мне не хватает?
Спасибо!
Добавьте wp_reset_query(); после цикла перед wp_list_pages
Ой! Извините, это помогло! Вы должны написать это как ответ, чтобы я мог принять его. Спасибо!
Это для будущих спрашивающих. Всякий раз,
когда вы используете query_posts или пользовательский wp_query, вы должны добавить wp_reset_query(); после вашего цикла или когда вы закончите обработку своих сообщений. Эта небольшая строка кода поможет решить проблемы с нумерацией страниц или, в вашем случае, оставить глобальный $post исходным, как перед вашим запросом.