Intereting Posts
Настройки постоянной привязки Заблокировано из admin и некоторые снимки не отображаются после неудачной установки SSL Печенье, специфичное для страницы Выходной годный архив на странице Как отобразить статистику BBPS? как я могу добавить ссылку меню, которая идет на внешнюю страницу Сломанные эскизы (иногда) с TimThumb Добавление вывода запятой в while wpquery Как создать другую структуру ссылок для страниц и сообщений? Автоматическое название мультимедиа по умолчанию и alt Есть ли плагин, который позволяет пользователю вашего сайта получать от вас электронное письмо с приложением? matisse theme show выдержки не весь контент Почему использование __construct вместо widget_class_name при создании виджета запускает из памяти ошибку Отображать содержимое с другой страницы сайта с помощью короткого кода Параметры строки запроса из настраиваемых полей, несогласованные результаты

WP_Query со смещением и 'orderby' => 'rand', смещение не работает

У меня есть следующая ситуация: на моем index.php я показываю последние 20 сообщений, используя WP_Query (). На той же странице в другом разделе я хотел бы отобразить еще 3 случайных сообщения из архива, которые не входят в число 20 последних.

Мой код (второй WP_Query):

$archive_random_args = array( 'post_type' => 'post', 'posts_per_page' => 3, 'offset' => 20, 'orderby' => 'rand' ); $archive_random_query = new WP_Query($archive_random_args); if ($archive_random_query->have_posts()) { while($archive_random_query->have_posts()) { $archive_random_query->the_post(); get_template_part("templates/article-random"); } } 

Проблема в том, что, несмотря на то, что значение смещения равно 20, сообщения из 20 последних отображаются в этом втором цикле WP_Query.

Можно offset и 'orderby' => 'rand' использоваться вместе в качестве аргументов?

PS: В настоящее время у меня 36 сообщений, поэтому есть более чем достаточно сообщений для второго WP_Query, чтобы выбрать 3 случайных, а не в 20 последних.

Solutions Collecting From Web of "WP_Query со смещением и 'orderby' => 'rand', смещение не работает"

Вам нужно получить идентификаторы сообщений из исходного основного запроса и исключить их. Затем вы должны удалить свое смещение из своего пользовательского запроса. Это должно делать свое дело. Случайное упорядочение в основном игнорирует параметр смещения, поэтому вам нужно явно удалить сообщения из запроса, чтобы исключить их

Вы можете использовать wp_list_pluck() чтобы получить массив идентификаторов сообщений из основного объекта запроса ( используя $wp_query->posts )

 $posts_ids = wp_list_pluck( $wp_query->posts, 'ID' ); 

Затем вам нужно передать это аргументам запроса в качестве параметра post__not_in

 'post__not_in' => $posts_ids,