有没有简单或容易的方法可以将所有帖子从循环中的自定义分类中排除?我一直在寻找高潮和低潮,而SE,SO或Google似乎都没有直接的答案。

我知道可以通过WPDB查询来完成,但是这似乎是一条巨大的跳绳,可以使事情变得相当简单。

评论

在该分类法中有任何术语的帖子,或者您是指自定义分类法中的特定术语?示例:如果我的分类法是水果,并且我有两个词,苹果和橘子,我想排除所有有水果的职位,还是仅有苹果的职位?

扩展@ t31os问:post_tag,category,link_category等都是_builtin分类法。因此,即使您将帖子标签称为“术语”,它也仍然只是一种分类法(非分层),并且与“类别”(分层)分类法处于同一“级别”。

继续@ t31os示例:我试图排除分类法水果中的所有帖子(无论它们是在“苹果”,“豌豆”还是“橙色”中)。

#1 楼

您可能希望将NOT EXISTS运算符与传递分类标准标签一起使用,该分类符告诉查询在循环内不要将自定义分类标准中选择的任何类别包括在内。

要排除所有位于分类法“水果”(无论哪种水果),以下是代码段:

$args = array(
    'post_type'      => 'post',
    'tax_query'      => array(
        array(
            'taxonomy' => 'fruit',
            'operator' => 'NOT EXISTS'
        )
    )
);

$query = new WP_Query( $args );


评论


看起来它应该比说NOT IN XX个术语更有效。该术语列表可能会扩展到很大的范围,但这应该涵盖具有该分类法名称的所有术语。

–意大利扁豆
17年5月12日19:48

尽管这是OP的问题的答案(已投票),但我们大多数人可能想排除一个特定术语或一组术语。为此,您需要此答案。

– rinogo
19年8月2日在18:34



#2 楼

解决这个问题的方法并没有真正公开,但应该公开。

您可以执行以下操作:

$args['tax_query'] = array(
    array(
        'taxonomy' => 'category',
        'terms' => array('cat', 'dog'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);


运算符可以使用其他术语,但是上面的代码基本上是说从以下位置获取所有帖子没有术语“猫”或“狗”的分类法“类别”。

评论


聪明。但是我仍然需要手动输入该分类法中的每个术语,对吗?

–托马斯
2011-3-21在11:45

我没有跟着你对不起。在术语数组中,定义要从循环查询中排除的术语值。如果您希望它们是动态的,则可以在每个帖子中添加一个自定义的元值,然后在查询中检查该元键的值,并按照您的意思进行设置。

– Dwayne Charrington
2011-3-21在12:18

啊。我明白您的意思,但这确实很麻烦。

–托马斯
2011-3-27在12:59

我还没有真正看过,但是肯定有一个插件可以满足您的要求吗?

– Dwayne Charrington
2011年3月27日在20:30

#3 楼

这是针对自定义帖子类型和自定义分类法的操作方法:

$happening = new WP_Query(
array( 
  'post_type'  => 'news',        // only query News post type
  'tax_query' => array(
    array(
        'taxonomy'  => 'news-cat',
        'field'     => 'slug',
        'terms'     => 'media', // exclude items media items in the news-cat custom taxonomy
        'operator'  => 'NOT IN')

        ),
   )
);


这非常适合将自定义分类法从自定义帖子类型中排除。.
只想添加查询循环代码以完成摘要:
while($ the_query-> have_posts()):$ the_query-> the_post();

#4 楼

我做了以下操作以排除某个分类术语中的帖子:

$argos = array( 
    'tax_query' =>  array (
        array(
            'taxonomy' => 'topics', // My Custom Taxonomy
            'terms' => 'college', // My Taxonomy Term that I wanted to exclude
            'field' => 'slug', // Whether I am passing term Slug or term ID
            'operator' => 'NOT IN', // Selection operator - use IN to include, NOT IN to exclude
        ),
    ),
    'post_type'=>'page', // Post type I want to show, can be a custom post type too
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order'=>'ASC',
    'post_parent' =>$post->ID // show child posts or pages of current page/post
); 

$query = new WP_Query( $args );


#5 楼

query_posts( array(
    'post_type' => 'listings',
    'tax_query' => array(
        array(
            'taxonomy' => 'status',
            'field'    => 'slug',
            'terms'    => 'sold',
            'operator' => 'NOT IN'
            ),
        )
    )
);


此代码不包括状态=>从post_type =>列表中出售的商品

#6 楼

我使用的“ RYO'Catgory Visibility'WordPress插件”似乎运行良好。 />http://ryowebsite.com/wp-plugins/category-visibility/

-亚当

评论


在我看来,必须安装额外的插件才能完成此任务。我宁愿将依存关系降到最低,并且肯定有一种方法可以在循环中完成。

–托马斯
2011-3-17在7:53