我如何对这个粘性帖子的自定义列表进行排序

时间:2016-08-11 作者:gurung

这是我的代码,它为我提供了我网站上所有的粘性帖子。

$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。下面是结果。

enter image description here

现在,我需要这个列表按照“类别slug”的值按字母顺序排列。所以它看起来像这样。

enter image description here

如果我的问题看起来不清楚或者我可能遗漏了什么,请在评论中告诉我。我不需要完整的代码(尽管那会很好),但需要一个关于如何做到这一点的建议或想法。

1 个回复
最合适的回答,由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
        );
    }
}

相关推荐

How to sort by number

我必须按数字对结果排序:<ul> <?php $productTerms = get_terms(\'prezzoceste\', array(\'hide_empty\' => 0, \'orderby\' => \'ASC\', \'meta_type\' => \'NUMERIC\', )); foreach($productTerms as $productTerm) : ?> <li> <i c