如何查询每个作者的最新帖子?

时间:2019-02-07 作者:HBCondo

任何人都可以提供一个MySQL或WP\\U查询代码片段示例,以返回每个作者在单个WordPress站点上的最新帖子吗?例如,如果站点有10位作者,但有500篇文章,那么查询将返回10条记录,其中每条记录都是每个作者最近发表的文章。谢谢

2 个回复
SO网友:phatskat

可以编写SQL查询来实现这一点:

<?php

$sql = <<<SQL
SELECT
    p.ID,
    p.post_title,
    p.post_author
FROM {$GLOBALS[\'wpdb\']->posts} p INNER JOIN (
    SELECT ID, post_title
        FROM {$GLOBALS[\'wpdb\']->posts} ORDER BY post_date DESC
    ) s ON p.ID=s.ID
WHERE
    p.post_type = \'post\'
AND
    p.post_status = \'publish\'
GROUP BY
  p.post_author
SQL;

$rows = $GLOBALS[\'wpdb\']->get_results( $sql );

SO网友:Lucien Dubois

您可以首先获取用户,然后对每个用户运行WP\\u查询:。(这是一种快速、简单但未经优化的方法)

$users = get_users( );
foreach ( $users as $user ) {

    $args = array(
        \'post_type\'              => array( \'post\' ),
        \'author\'                 => $user->ID
        \'posts_per_page\'         => \'1\',
        \'order\'                  => \'DESC\',
        \'orderby\'                => \'date\',
    );
    $query = new WP_Query( $args );
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            // do something
        }
    }
    wp_reset_postdata();

}

相关推荐

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

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