您还可以使用the_posts
过滤器和usort
根据需要对帖子进行排序。the_posts
遗憾的是,没有记录过滤器
你可以试试这样的
add_filter( \'the_posts\', function( $posts, $q ) {
if( $q->is_main_query() && $q->is_home() ) {
usort( $posts, function( $a, $b ){
return strcasecmp(
get_the_category( $a->ID )[0]->name,
get_the_category( $b->ID )[0]->name
);
});
}
return $posts;
}, 10, 2 );
EDIT
您还可以运行循环,只显示一个类别、回放循环、再次运行并显示下一个类别,依此类推
// main loop
if (have_posts()) {
while (have_posts()) {
the_post();
if( in_category( \'a\' ) ) {
//display category \'a\' posts
}
}
// rewind
rewind_posts();
// new loop
while (have_posts()) {
the_post();
if( in_category( \'b\' ) ) {
//display category \'b\' posts
}
}
}