问题描述

有没有简单或简单的方法来排除循环中的自定义分类法中的所有帖子?我一直在寻找高低,SE,SO 或谷歌似乎都没有一个直接的答案。

我知道它可以通过一个 WPDB 查询完成,但是似乎像大规模的绳索跳到应该是相当简单的东西。

最佳解决方案

解决这个问题的方式并不是真正的宣传,而应该是这样。

您可以执行以下操作:

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

操作符参数可以采用其他术语,但上述代码基本上是说从’cat’ 或’dog’ 这两个术语中获取’category’ 分类的所有帖子。

次佳解决方案

以下是自定义帖子类型和自定义分类法的操作方法:

$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();

第三种解决方案

您将需要使用 NOT EXISTS 运算符以及传递分类标记,这将告诉查询不要在循环中包含您的自定义分类法中的任何选定类别。

要排除分类学”fruit” 中的所有帖子 (不论水果种类),这里是代码段:

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

$query = new WP_Query( $args );

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。