Php 从WP_查询中排除特定术语

Php 从WP_查询中排除特定术语,php,wordpress,loops,taxonomy-terms,Php,Wordpress,Loops,Taxonomy Terms,我想为分类术语创建一个foreach循环,该循环用于自定义post类型 更具体地说,我想要一个查询所有产品类别的循环,而不是“特价”类别和子类别类别。额外的好处是,如果产品没有类别,也可以查询它们,并按ASC顺序对它们进行排序(不像分别对产品和类别进行排序。必须同时对它们进行排序) 那么,我应该如何处理我的代码以使其按需工作呢 当前代码: <?php $args = array( 'post_type' => 'products', 'showposts'

我想为分类术语创建一个foreach循环,该循环用于自定义post类型

更具体地说,我想要一个查询所有产品类别的循环,而不是“特价”类别和子类别类别。额外的好处是,如果产品没有类别,也可以查询它们,并按ASC顺序对它们进行排序(不像分别对产品和类别进行排序。必须同时对它们进行排序)

那么,我应该如何处理我的代码以使其按需工作呢

当前代码:

<?php

$args = array(
    'post_type'    => 'products',
    'showposts'    => -1,
    'post_status'  => 'publish',
    'parent' => 0,
    'hide_empty' => true,
    'tax_query' => array(
        'taxonomy' => 'categories',
        'field'    => 'slug',
        'terms'    => array( 'special-offers', 'other-terms' ),
        'operator' => 'NOT IN',
    ),
);

$terms = get_terms('categories', $args );

foreach ( $terms as $term ) :

    echo '<h2>' . $term->name . '</h2>';

endforeach; 

?>

您的税务查询应该在另一个数组中查找

'tax_query' => array(
   array(
    'taxonomy' => 'categories',
    'field'    => 'slug',
    'terms'    => array( 'special-offers', 'other-terms' ),
    'operator' => 'NOT IN',
   )
),
剩下的看起来还可以。
检查一下这个

最后的解决方案是将排除和术语id添加到分类参数中。因为它是用于分类的,并且使用foreach循环

$args = array(
    'parent' => 0,
    'hide_empty' => true,
    'exclude' => 13,
);
关于如何输出没有分类法的自定义帖子类型帖子的答案可以在这里找到:


感谢CBroe和ste付出的时间。

结果仍然一样。不排除术语。至少我们现在走对了方向。很抱歉,当前无法免费帮助您调试此问题您正在将WP查询配置数组输入get_术语,但此方法不采用此方法。你可以在这里使用什么样的有效选择标准,列在“好的”下面,我把它弄清楚了。但问题是如何显示没有类别的帖子。不幸的是,我不太懂wordpress抄本。所以这会帮助我得到一个代码示例。你试过研究它吗?找到了解决办法。现在我需要对terms数组和posts数组进行排序。然后以某种方式组合数组并按名称对它们进行排序。这已经很旧了,但我很确定这是因为您使用了“categories”而不是“categority”作为分类标准。除非你有一个叫做“分类”的自定义分类。只是把这个放在这里给未来的读者。很高兴你把它整理好了。你只想用这个id排除吗?我建议再看看你原来的想法。如果ID发生更改或需要排除另一个ID,则硬编码ID将中断。您必须继续添加以排除。尝试寻找更有活力的东西。