Intereting Posts
Добавление элементов html в wp nav menu Меню Bootstrap Drop Down не работает Использование WordPress для создания развертки навигации по «Поиск продукта» Как создать пользовательскую панель мониторинга для моего сайта прачечной? Я использую фильтр для удаления обертки тегов <p>, но все еще обернуты элементы? Как изменить логотип на сайте WordPress, который является частью 7-го сайта? Прекратить синтаксический анализ коротких кодов Объект для хранения записей контактной формы? Я хочу разрешить использование атрибута data-flw в ссылках в комментариях как я могу позволить пользователям просматривать свои собственные ожидающие сообщения на первой странице Пользовательский тип post_type_link типа «страница не найден» в любом другом настраиваемом типе сообщения Ошибка при попытке выхода из системы Крючок для редактирования Как установить альтернативный текст всех изображений в существующих сообщениях и галереях? Media Manager (с 3.5): как показать пустую медиабиблиотеку при создании медиа-кадра?

Как исключить посещаемые сообщения из цикла

Как я могу исключить посещенные сообщения из цикла? У меня есть петля недавних сообщений на одной странице, которая исключает текущую запись, и я хочу увеличить количество пользователей, просматривая их, отфильтровывая те, которые они уже видели. Вот базовый цикл.

<?php $featured_post_id = get_the_ID(); global $post; $args = array('cat' => '9', 'posts_per_page' => 5, 'post__not_in' => array($featured_post_id)); $my_query = new WP_Query($args); if ( $my_query->have_posts() ) : ?> 

Это более тяжелый вопрос, чем вы думаете. Вам нужно будет сделать совсем немного:

  1. Установите cookie в браузере пользователя, чтобы отслеживать сообщения, которые они видели.
  2. Извлеките данные из этого файла cookie, чтобы получить список идентификаторов сообщений
  3. Добавьте это в массив с $featured_post_id чтобы передать его в параметр post__not_in

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

Но для остального, ваш код будет выглядеть примерно так:

 // get_previously_viewed_posts() will retrieve a list of viewed post IDs from a user cookie. $posts_to_exclude = get_previously_viewed_posts(); // Add the current post ID to the array of posts to ignore. $posts_to_exclude[] = get_the_ID(); $args = array( 'cat' => '9', 'posts_per_page' => 5, 'post__not_in' => $posts_to_exclude ); $my_query = new WP_Query( $args ); if ( $my_query->have_posts() ) : while ( $my-query->have_posts() ) : $my-query->the_post(); // the loop endwhile; endif;