Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从自定义分类查询中排除子分类中的帖子?_Mysql_Wordpress_Taxonomy - Fatal编程技术网

Mysql 如何从自定义分类查询中排除子分类中的帖子?

Mysql 如何从自定义分类查询中排除子分类中的帖子?,mysql,wordpress,taxonomy,Mysql,Wordpress,Taxonomy,我的WordPress主题有一个称为“集合”的自定义分类法。自定义分类法是分层的,因此存在子集合 我有一个叫做“书”的藏品和一个叫做“小说”的子藏品。有些帖子只是在“书”中,有些帖子是在“小说”中。我希望“Books”集合的页面只显示主“Books”集合中的帖子,而不是“小说”子集合中的帖子。但默认情况下,WordPress在分类查询的“子集合”中包含帖子 如何从分类查询中排除子术语中的帖子?这对于类别来说很容易,但是似乎没有内置的方法来实现自定义分类法 更新: 简的解决方案非常有效。下面是我

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

我有一个叫做“书”的藏品和一个叫做“小说”的子藏品。有些帖子只是在“书”中,有些帖子是在“小说”中。我希望“Books”集合的页面只显示主“Books”集合中的帖子,而不是“小说”子集合中的帖子。但默认情况下,WordPress在分类查询的“子集合”中包含帖子

如何从分类查询中排除子术语中的帖子?这对于类别来说很容易,但是似乎没有内置的方法来实现自定义分类法


更新: 简的解决方案非常有效。下面是我使用的代码,放在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_查询类。如果您想解决这个问题,可以使用他们使用的相同技巧:获取分类法项的所有子项,然后获取这些子项中的所有帖子id,然后将它们放入
post\u not\u in
参数:

$unwanted_children = get_term_children($taxonomy_term_id, $taxonomy);
$unwanted_post_ids = get_objects_in_term($unwanted_children, $taxonomy);
这将导致查询在(1,2,3)中包含
和posts.ID,在(2,3)中不包含posts.ID
,该查询将仅返回ID为1的此帖子。非常不公平,但它是有效的

当然,如果您采用这种方法,您也可以只传递所需的post id,而不告诉查询有关分类的任何信息


您如何为类别执行此操作

谢谢,这很有效!对于类别,您可以使用“category\uuuu in”参数,该参数不包括子类别中的帖子。不幸的是,Wordpress还没有用于分层自定义分类的等效参数。