gpt4 book ai didi

mysql - Wordpress:如何从自定义分类查询中排除子分类中的帖子?

转载 作者:行者123 更新时间:2023-11-29 02:07:27 24 4
gpt4 key购买 nike

我的 WordPress 主题有一个名为“集合”的自定义分类法。自定义分类法是分层的,因此存在子集合。

我有一个名为“书籍”的集合和一个名为“小说”的子集合。有的帖子只在“书”里,有的帖子在“小说”里。我希望“书籍”收藏的页面只显示主要“书籍”收藏中的帖子,而不是“小说”子收藏中的帖子。但默认情况下,WordPress 在分类法查询中包含“子集合”中的帖子。

如何从我的分类查询中排除子术语的帖子?这对类别来说很容易,但似乎没有内置的方法可以用自定义分类法来做到这一点。


更新:Jan 的解决方案非常有效。这是我使用的代码,位于 index.php 中的循环之上:

// if is taxonomy query for 'collections' taxonomy, modify query so only posts in that collection (not posts in subcollections) are shown.
if (is_tax()) {
if (get_query_var('collection')) {
$taxonomy_term_id = $wp_query->queried_object_id;
$taxonomy = 'collection';
$unwanted_children = get_term_children($taxonomy_term_id, $taxonomy);
$unwanted_post_ids = get_objects_in_term($unwanted_children, $taxonomy);

// merge with original query to preserve pagination, etc.
query_posts( array_merge( array('post__not_in' => $unwanted_post_ids), $wp_query->query) );
}
}

最佳答案

似乎是 WP_Query 类 always includes all items of hierarchical taxonomies .如果你想解决这个问题,你可以使用他们使用的相同技巧:获取分类项的所有子项,然后获取这些子项中的所有帖子 ID,然后将它们放入 post__not_in 参数中:

$unwanted_children = get_term_children($taxonomy_term_id, $taxonomy);
$unwanted_post_ids = get_objects_in_term($unwanted_children, $taxonomy);

这将产生一个包含 AND posts.ID IN (1, 2, 3) AND posts.ID NOT IN (2, 3) 的查询,它将仅返回带有 ID 的帖子1. 非常不优雅,但它有效。

当然,如果你走这条路,你也可以只传递你想要的帖子 ID,而不告诉查询任何关于分类的信息。

您如何为类别执行此操作? The query code seems to include children there too.

关于mysql - Wordpress:如何从自定义分类查询中排除子分类中的帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com