Следующий фрагмент взят из виджета боковой панели, в котором перечислены «последние сообщения». Поскольку он находится на главной странице, а мой последний прилепленный пост занимает видное место на этой странице, я хочу пропустить его в этом цикле. Тем не менее, это post_not_in=sticky_posts
не имеет никакого эффекта.
<?php
$the_query = new WP_Query("showposts=$number&offset=1&order=ASC&post_not_in=sticky_posts");
while ($the_query->have_posts()) : $the_query->the_post();
$do_not_duplicate = $post->ID; ?>
Я взял ответ @tnorthcutt из Кодекса WordPress
query_posts()
о Sticky Parameters и создал отдельный пример, который вы можете поместитьtest.php
в корень вашего веб-сайта и увидеть, как он запускается, перейдя по такому URL-адресу с заменой вашего домена:Некоторые примечания к коду; Мне пришлось использовать массив, эквивалентный строке запроса, которую вы передали,
WP_Query()
потому чтоpost__no_in
аргумент не может быть передан в виде строки с разделителями-запятыми (не знаю, почему, возможно, недосмотр?).Также я хотел убедиться, что вы знаете, что начало с
offset=1
(вместоoffset=0
) означает, что вы будете исключать первое сообщение, которое в противном случае было бы возвращено запросом. Конечно, вы все равно получите указанное количество сообщений,$number
предполагая, что у вас есть столько подходящих сообщений +1. Итак, вот код:Спасибо, Майк. Отличное решение и продуманное объяснение. Я очень ценю это. Извините, что так долго не отвечал 🙂
Ответ
post__not_in
на вопрос здесь: wordpress.stackexchange.com/questions/127/…@Dan Gayle : Хороший улов.
Спасибо за ответ. поскольку я не использую
query_posts()
в своем примере, как мне интегрировать ваш ответ в то, с чем мне приходится работать?Скотт, см. выше, я добавил еще кое-что.
отлично, работать даже с ajax позже
Если вы хотите исключить все прикрепленные записи из запроса, используйте
query_posts(array("post__not_in" =>get_option("sticky_posts")));
(из кодекса )
Однако похоже, что это будет работать только в версии 3.0 или выше: http://wordpress.org/support/topic/except-sticky-posts-using-query_posts
Изменить: в ответ на ваш комментарий ниже попробуйте это (я не уверен, что это сработает, но, надеюсь, это поможет вам начать):
Ответ Трэвиса подходит, если вы создаете свой собственный запрос, возможно, для вторичного цикла, но если вам нужно изменить свой основной запрос в блоге, вы можете использовать pre_get_posts для фильтрации прикрепленных сообщений.
В приведенном ниже примере я исключаю прикрепленные сообщения только в том случае, если запрос является страницей блога, поскольку я по-прежнему хочу, чтобы прикрепленные сообщения возвращались на страницах таксономии, поиска и т. д. (я показываю прикрепленные сообщения как избранные статьи в основных новостях). страница).
Просто поместите приведенный выше фрагмент в файл functions.php.