Как исключить дублирование записей при использовании нескольких циклов в WordPress

Недавно один из наших пользователей столкнулся со следующей проблемой: дублирование записей при разработке собственной темы. Он пытался вывести свежие записи на главной странице, а затем отобразить список случайных записей в отдельном цикле (loop) на той же странице. Проблема заключалась в том, что самые свежие записи иногда дублировали случайные записи в цикле. В этой статье мы покажем вам как исключить дублирование записей при использовании нескольких циклов в WordPress.

Решение исключения дублированных записей заключается в том, чтобы сохранять ID записи из первого цикла, а затем осуществлять проверку во втором цикле. Вот как это сделать. Ваш первый код цикла должен выглядеть примерно так (обратите внимание на «волшебную» строку):

<?php $my_query = new WP_Query('category_name=featured&posts_per_page=1');
  while ($my_query->have_posts()) : $my_query->the_post();

  $do_not_duplicate = $post->ID; //Это волшебная строка

?>
    <!-- Выполняем то, что нужно... -->
<?php endwhile; ?>

Итак, мы сохранили ID записи из первого цикла в переменную $do_not_duplicate, давайте теперь добавить проверку на нее в нашем втором цикле. Второй код цикла должен выглядеть примерно так:

<?php if (have_posts()) : while (have_posts()) : the_post();

  if( $post->ID == $do_not_duplicate ) continue; //Это волшебная строка

 ?>
   <!-- Выполняем то, что нужно... -->
  <?php endwhile; endif; ?>

Как только вы добавите эти две строки в свой код, ваши записи НЕ будут дублироваться.

Мы надеемся, что эта статья поможет всем начинающим разработчикам тем исключить дублирование записей при использовании нескольких циклов в WordPress.

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 3.5/5 (4 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top