Недавно один из наших пользователей столкнулся со следующей проблемой: дублирование записей при разработке собственной темы. Он пытался вывести свежие записи на главной странице, а затем отобразить список случайных записей в отдельном цикле (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.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.