почему выводится текущий заголовок страницы?

это в моем файле sidebar.php, который втягивается в файл header.php (это плохая практика?). в любом случае, последний элемент в списке – это текущий заголовок страницы, несмотря на мои запросы_почты с аргументами только настраиваемого типа сообщений для бюллетеней

<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Sidebar Widget')) : else : ?> <div id="sidebar" class="newsletters"> <h2>Newsletters</h2> <ul> <?php $args = array ('post_type' => 'newsletters'); query_posts($args); if (have_posts()) : while (have_posts()) : the_post();?> <li><a href="<?php the_field('pdf');?>"><?php the_title();?></a></li> <?php wp_reset_query(); endwhile; endif; ?> </ul> </div><!--END sidebar --> 

Solutions Collecting From Web of "почему выводится текущий заголовок страницы?"

Простой ответ – потому что вы используете query_posts() , который изменяет основной запрос. Это почти всегда приводит к непредвиденным результатам, так как сейчас вы обнаруживаете трудный путь.

Как правило, лучше всего вызывать боковую панель с помощью get_sidebar() вместо include (что вы, вероятно, есть, но это неясно), и я предпочитаю вызывать его после запуска основного цикла, чтобы вместо этого использовать новый WP_Query() . Это заменит текущий цикл полностью новыми данными и будет моим выбором решения. Замените query_posts($args) на $query = new WP_Query($args) и вам должно быть хорошо идти. Обычно, я бы сказал, избавиться от вашего wp_reset_query() , но поскольку вы вызываете это в заголовке, вы должны оставить его, чтобы он дал вам обычные данные страницы для остальной части страницы. Это приведет к некоторым накладным расходам, но если у вас есть хорошее кэширование, вы не должны его вообще замечать.

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

Пример «рабочий» код:

 <?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Sidebar Widget')) : else : ?> <div id="sidebar" class="newsletters"> <h2>Newsletters</h2> <ul> <?php $args = array ('post_type' => 'newsletters'); $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post(); $pdf=get_field('pdf'); echo "<li>"; echo '<a href="'.$pdf.'">'; the_title(); echo "</a></li>"; endwhile; wp_reset_postdata(); ?> </ul> </div><!--END sidebar --> <?php endif; ?>