Wordpress: удаление постов в "The Loop" с помощью фильтров - PullRequest
5 голосов
/ 05 октября 2009

После прочтения документации Wordpress я понял, что вы можете удалять записи из индекса, используя фильтры внутри "Цикла", например:

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

<!-- The following tests if the current post is in category 3. -->
<?php if (in_category('3')) continue; ?>

<!-- display normal post -->
<?php endwhile; else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>

Что мне интересно, так это наличие фильтра / хука для фильтрации сообщений в have_posts() без изменения шаблона. Пока что я нашел варианты изменить результаты, но не удалять результаты из набора результатов.

Ответы [ 2 ]

4 голосов
/ 13 августа 2012

Вы можете подключиться к pre_get_posts. Более подробная информация здесь: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts. Как описано в статье:

Этот хук вызывается после создания объекта переменной запроса, но до запуска фактического запроса.

Используя query_posts (), вы можете переопределить переменные запроса и исключить любые сообщения. По этой ссылке есть несколько примеров того, как это сделать.

1 голос
/ 05 октября 2009

То есть вы хотите убрать его с показа, но все же он есть "там", если вы решите показать его позже? Не совсем понятно, что вы хотите сделать.

В качестве одного примера, в прошлом я использовал Query Posts, чтобы скрыть категории от моей домашней страницы: http://codex.wordpress.org/Template_Tags/query_posts#Exclude_Categories_From_Your_Home_Page

...