对帖子查询中的作者帖子进行编号

时间:2017-06-25 作者:Nori

我想得到的是,我不知道如何开始:

查询帖子(例如,从特定类别,按日期排序),但将来自同一作者的帖子按日期编号计入该帖子列表。

For example:

Date: 2017年1月8日Title: 很棒的帖子Author: 约翰Number: 1.

Date: 2017年1月7日Title: 激动人心的帖子Author: 迈克Number: 1.

Date: 2017年1月6日Title: 新建职位Author: 约翰Number: 2.

Date: 2017年1月5日Title: 退出岗位Author: 内森Number: 1.

Date: 2017年1月4日Title: 最佳帖子Author: 甘地Number: 1.

Date: 2017年1月3日Title: 钻孔桩Author: 约翰Number: 3.

Date: 2017年1月2日Title: 惊人的帖子Author: 甘地Number: 2.

Date: 2017年1月1日Title: 另一个帖子Author: 迈克尔Number: 1.

当然,我在寻找一种优雅、最短、最简单的代码。

Edit: 我想到了一个主意:也许我可以以某种方式使用author id作为一个新的变量名,将每个post循环(while)添加到此变量中并对其进行响应。

所以我试着:

++${the_author_meta( ID )}; echo ${the_author_meta( ID )};
我认为这将创建一个由作者id命名的变量(例如:$465) 并会增加1(所以$465 = 1) 和回显“1”。但事实并非如此:)事实上++${the_author_meta( ID )}; 它自己重复了两次作者id。。。

2 个回复
SO网友:dbeja

您可以有一个authors totals数组,在每次迭代中,您将增加该author的键:

<?php foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
    <?php $author_count = isset( $authors_totals[ get_the_author_meta(\'ID\') ] ) ? int_val( $authors_totals[ get_the_author_meta(\'ID\') ] ) + 1 : 1; ?>
    Date: <?php the_date(\'d/m/Y\'); ?> 
    Title: <?php the_title(); ?> 
    Author: <?php the_author(); ?>: <?php echo $author_count; ?>    
<?php endforeach; ?>

SO网友:kero

听起来你可以只保留一个计数器,其中的作者已经在列表中了,就像这样

// Counting
$authors_printed = array();
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();

        $author = get_the_author();
        if (empty($authors_printed[ $author ])) {
            $authors_printed[ $author ] = 1;
        } else {
            $authors_printed[ $author ]++;
        }
        // now $authors_printed[ $author ] has the correct number
        // more code..
    }
}

结束