Wordpress:使用过滤器删除“循环”中的帖子

Posted

技术标签:

【中文标题】Wordpress:使用过滤器删除“循环”中的帖子【英文标题】:Wordpress: Removing posts in "The Loop" using filters 【发布时间】:2010-12-03 20:46:52 【问题描述】:

阅读 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() 中的帖子。到目前为止,我找到了更改结果的选项,但没有从结果集中删除结果。

【问题讨论】:

【参考方案1】:

您可以连接到“pre_get_posts”。更多信息请点击此处:http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts。如文章所述:

在创建查询变量对象之后,但在实际查询运行之前调用此钩子。

使用 query_posts(),您可以覆盖查询变量并排除任何帖子。该链接有一些关于如何执行此操作的不错示例。

【讨论】:

【参考方案2】:

所以您想将其从显示中删除,但仍保留它以防您决定稍后显示它?不太清楚你想做什么。

举个例子,过去我曾使用查询帖子将类别排除在我的主页之外:http://codex.wordpress.org/Template_Tags/query_posts#Exclude_Categories_From_Your_Home_Page

【讨论】:

必须同意 Adam 的观点——使用其中一个类别参数(可以在 Adam 链接的那篇文章中找到)和 query_posts 来过滤您的类别。

以上是关于Wordpress:使用过滤器删除“循环”中的帖子的主要内容,如果未能解决你的问题,请参考以下文章

用于更改编辑帖子作者框中的作者列表的 WordPress 过滤器

WordPress |帖子查询 |查询帖子类别以创建子类别过滤器并将其应用于我的函数文件中的 Ajax 过滤器

在 Wordpress 自定义帖子类型循环中使用 ACF 分类字段作为变量

php 检测WordPress循环中的最后一个帖子

PHP 从WordPress中的循环中排除粘滞帖子

批量删除 WordPress 帖子默认编辑器中的所有内容