从 WP_Query 中排除特定条款

Posted

技术标签:

【中文标题】从 WP_Query 中排除特定条款【英文标题】:Excluding Specific Terms from WP_Query 【发布时间】:2017-06-23 06:16:51 【问题描述】:

我想为自定义帖子类型的分类术语创建一个 foreach 循环。

更具体地说,我想要一个查询所有产品类别的循环,但不是“特价商品”类别而不是类别子类别。如果产品没有类别也可以查询它们并按 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; 

?>

【问题讨论】:

您将 WP 查询配置数组输入 get_terms,但这不是此方法所采用的。您可以在此处使用的有效选择标准列在developer.wordpress.org/reference/functions/get_terms好的,我把它搞定了。但问题是我如何显示没有类别的帖子。不幸的是,我不是那么熟练,确实了解wordpress codex。所以它会帮助我获得一个代码示例。 你有没有试过研究这个? google.com/search?q=wordpress+query+get+posts+without+taxonomy 找到了解决方案。现在我需要对术语数组和帖子数组进行排序。然后以某种方式组合数组并按名称对其进行排序。 这已经很老了,但我很确定这是因为您使用“类别”而不是“类别”作为分类标签。除非您有一个称为“类别”的自定义。只是把它放在这里给未来的读者。 【参考方案1】:

最终解决方案是在分类参数中添加 exclude 和 term id。因为它是用于分类并且它使用 foreach 循环。

$args = array(
    'parent' => 0,
    'hide_empty' => true,
    'exclude' => 13,
);

关于如何输出没有分类的自定义帖子类型帖子的答案可以在这里找到:http://www.codeforest.net/wordpress-tip-show-posts-no-category-term

感谢 CBroe 和 ste 抽出宝贵时间。

【讨论】:

很高兴你把它整理好了。是你唯一想要的那个id吗?我建议再次查看您的原始想法。如果 ID 被更改或者您需要排除另一个您必须继续添加以排除的 ID,硬编码 ID 将会中断。尝试寻找更有活力的东西。【参考方案2】:

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

'tax_query' => array(
   array(
    'taxonomy' => 'categories',
    'field'    => 'slug',
    'terms'    => array( 'special-offers', 'other-terms' ),
    'operator' => 'NOT IN',
   )
),

其余的似乎还可以。 在此查看WP_Codex

【讨论】:

还是一样的结果。不排除条款。 嗯。好吧,至少我们现在走在了正确的轨道上。抱歉,目前无法免费帮助您调试此问题

以上是关于从 WP_Query 中排除特定条款的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress WP_Query,从元术语中排除日期

从存档页中排除类别

从 Woocommerce 相关产品中排除特定产品类别

存档页面日期的 WP_Query 不起作用

从 springBoots `bootJar` gradle 任务中排除特定依赖项

如何从 Serilog 中排除特定的异常类型?