WP自定义查询中的按类别排序和过帐

时间:2017-02-05 作者:webecho

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的顺序获得该类别内的帖子,但我不知道如何对它们进行排序。

非常感谢您的建议

1 个回复
最合适的回答,由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;
希望这有帮助!

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post