我希望能够在浏览父类别时列出所有帖子(儿童和父母)。
像这样:
使用下面的代码(放在category.php中),当我在父类别中时,我不会收到所有帖子。我只收到一个子类别的帖子,而不是几个。
任何想法如何解决这个问题?
Vector3.set
答案 0 :(得分:0)
我认为您的查询存在一些问题。
https://codex.wordpress.org/Plugin_API/Action_Reference/parse_query
https://codex.wordpress.org/Template_Tags/get_posts
" meta_key"显示的选项但是" meta_value"丢失。
WP也不建议直接使用query_posts,但要使用get_posts函数或挂钩 pre_get_posts 操作。
要获取某个类别子类别的所有帖子的列表,您可以执行以下操作:
<?php ...
$categories = get_categories(array("child_of" => $parent_category->term_id));
$posts_to_display = get_posts("category" => $parent_category->term_id);
foreach($categories as $category){
// query child posts of this category here of this category here using get_posts
// then merge them to the $posts_to_display array
}
//Do what ever you want with the array
或者,如果您仍想使用query_posts并且Wordpress循环不使用 get_posts ,请使用挂钩 pre_get_posts 操作:
<?php
function get_posts_for_parent_category( $query ) {
// make sure that you are in the category page not single post or custom post type page
if(!$query->is_category)
return;
$parent_category = $query->get_querried_object();
$categories_to_query = array($parent_category->term_id);
// Using get_categories to get all child categories_to_query
// Get their ids and add it to the $categories_to_query array
$query->set("category__in",$categories_to_query);
}
add_action( 'pre_get_posts', 'get_posts_for_parent_category' );