这是我的代码,它为我提供了我网站上所有的粘性帖子。
$sticky = get_option( \'sticky_posts\' );
$args = array(
\'posts_per_page\' => -1,
\'post__in\' => $sticky,
\'ignore_sticky_posts\' => 1
);
$query = new WP_Query( $args );
while ($query->have_posts()) { //while loop starts
$query->the_post();
?>
<a href="<?php echo the_permalink();?>"><?php echo get_the_ID();?></a>
<?php
$post_categories = wp_get_post_categories( get_the_ID() );
$cats = array();
foreach($post_categories as $c){
$cat = get_category( $c );
$cats[] = $cat->slug;
}
foreach($cats as $cat){
echo $cat;
}
echo \'<br>\';
} //while loop ends
现在,它只显示带有该帖子链接的帖子id以及该帖子所属类别的类别slug。下面是结果。
现在,我需要这个列表按照“类别slug”的值按字母顺序排列。所以它看起来像这样。
如果我的问题看起来不清楚或者我可能遗漏了什么,请在评论中告诉我。我不需要完整的代码(尽管那会很好),但需要一个关于如何做到这一点的建议或想法。
最合适的回答,由SO网友:Krzysztof Grabania 整理而成
这应该可以做到:
$sticky = get_option( \'sticky_posts\' );
$args = array(
\'posts_per_page\' => -1,
\'post__in\' => $sticky,
\'ignore_sticky_posts\' => 1
);
$query = new WP_Query( $args );
$ids_by_category = array();
while ($query->have_posts()) {
$query->the_post();
$post_categories = wp_get_post_categories(get_the_ID());
foreach($post_categories as $c){
$cat = get_category($c);
$ids_by_category[$cat->slug][] = get_the_ID();
}
}
// sort by key
ksort($ids_by_category);
foreach ($ids_by_category as $category_slug => $ids) {
foreach ($ids as $id) {
printf(
\'<a href="%s">%d</a> %s<br>\',
get_permalink($id),
$id,
$category_slug
);
}
}