“Not Only In”分类查询操作符?

时间:2011-02-09 作者:matpie

我有多个用户在我的WordPress设置中将内容添加到限制类别(使用RoleScoper),这些内容不会显示在主页上(自定义模板query_posts()).

我正在寻找一种方法,通过将提交的内容添加到另一个类别,将其“推广”到主页。

我的循环代码如下所示:

<?php
query_posts($query_string . \'&cat=-37\');
if (have_posts()):
    while (have_posts()): the_post(); ?>
这将排除第37类的所有员额。然而,即使我将帖子添加到不同的类别,它仍然会被排除在外。

如果一篇文章只属于这一类,有没有办法排除它?

1 个回复
SO网友:Joe Hoyle

没有简单的方法可以通过WP_Query(). 根据您有多少类别,以下可能不是一个好主意。如果你有20个,你可能就没事了。因此,与其说“所有帖子,不包括37中的帖子”,不如说“让我从所有方面了解所有内容(不指定term\\u id 37”)。

为此,您需要使用category__in 对于所有其他类别:

// Get all the category IDs (except 37)
$categories = get_terms( \'category\', array( \'exclude\' => array( 37 ), \'fields\' => \'ids\' ) );

query_posts( array( \'category__in\' => $categories ) );
这将为您提供除/以及37之外的所有类别的帖子。然而,对大量类别执行此操作将开始减慢查询速度(例如,我认为+40000个帖子)。

结束

相关推荐

是否从wp_list_categories中筛选“非活动”类别?

我想在类别编辑器屏幕中添加一个复选框,以允许“停用”类别(可能是在网站所有者处理类别内容和帖子时)。完成此操作后,我可以选择哪些选项来排除设置为“非活动”的类别?我认为可以这样做的一种方法是,只需在wp\\u list\\u类别上运行一个过滤器,然后在exlude=list中插入一个实用程序函数,该函数将返回选中inactive为true的所有cat\\u id。还有其他方法吗?