NB:我没有足够的声誉直接在上面提到的帖子上问这个问题。
我使用了来自1: Get all categories and posts in those categories
它列出了所有类别,这些类别中列出了帖子,但我在设置orderby时遇到了问题。。。
特别是Revisit answer here
<?php
$args = array(
\'posts_per_page\' => -1
);
$query = new WP_Query($args);
$q = array();
while ( $query->have_posts() ) {
$query->the_post();
$a = \'<a href="\'. get_permalink() .\'">\' . get_the_title() .\'</a>\';
$categories = get_the_category();
foreach ( $categories as $key=>$category ) {
$b = \'<h2><a href="\' . get_category_link( $category ) . \'">\' . $category->name . \'</a></h2>\';
}
$q[$b][] = $a; // Create an array with the category names and post titles
}
/* Restore original Post Data */
wp_reset_postdata();
foreach ($q as $key=>$values) {
echo $key;
echo \'<ul>\';
foreach ($values as $value){
echo \'<li>\' . $value . \'</li>\';
}
echo \'</ul>\';
}
?>
我想做的是添加按类别标题排序,然后在该类别内按文章标题排序。
我可以将其添加到第1行的初始$args中
$args = array(
\'posts_per_page\' => -1,
\'orderby\' => \'title\',
\'order\' => \'ASC\',
);
这将按照类别中包含的帖子的标题对类别进行排序。
我试图按照ASC的顺序获得类别,然后按照ASC的顺序获得该类别内的帖子,但我不知道如何对它们进行排序。
非常感谢您的建议
最合适的回答,由SO网友:Raunak Gupta 整理而成
要做到这一点,您必须首先按升序获取所有类别get_categories
那么你必须把cat\\u id传进来WP_Query
获取与该类别相关的帖子。
$args_cat = [
\'orderby\' => \'name\',
\'order\' => \'ASC\',
\'hide_empty\' => 0,
];
$categories = get_categories($args_cat);
//print_r($categories);
if (!empty($categories)):
foreach ($categories as $category):
$args = [
\'post_type\' => \'post\',
\'posts_per_page\' => -1,
\'order\' => \'ASC\',
\'orderby\' => \'title\',
\'cat\' => $category->term_id
];
$query = new WP_Query($args);
while ($query->have_posts()) : $query->the_post();
//You code
the_title();
//...
endwhile;
wp_reset_postdata(); // reset the query
endforeach;
endif;
希望这有帮助!