如何显示至少发布了1条帖子的用户列表?

时间:2014-08-16 作者:steakpi

我想做的是列出至少贡献过一篇帖子的用户。

我需要展示以下内容:

[User photo] | [User Name] | [User post count]

e、 g。

[photo] Joe Bloggs(8)

我开始走这条路:

<?php
   $blogusers = get_users( \'orderby=post_count\' );
      foreach ( $blogusers as $user ) {
      echo \'<li>\' . esc_html( $user->display_name ) . \'</li>\';
   }
?>
然而,这似乎只是返回所有注册到博客的用户,而不是那些有贡献的用户,所以我肯定做得不对。

我是wordpress和PHP新手,因此非常感谢您的帮助。

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您需要设置who 中的参数get_users

<?php
   $blogusers = get_users( \'orderby=post_count&who=authors\' );
      foreach ( $blogusers as $user ) {
      echo \'<li>\' . esc_html( $user->display_name ) . \'</li>\';
   }
?>

EDIT

看来我回答得太快了。您的问题和我的回答中的代码是您想要实现的目标的开始。

我现在没有时间编写代码,去看橄榄球赛,但这里是《214》中使用的完整代码,用于显示作者及其帖子数量。希望这有帮助

function twentyfourteen_list_authors() {
    $contributor_ids = get_users( array(
        \'fields\'  => \'ID\',
        \'orderby\' => \'post_count\',
        \'order\'   => \'DESC\',
        \'who\'     => \'authors\',
    ) );

    foreach ( $contributor_ids as $contributor_id ) :
        $post_count = count_user_posts( $contributor_id );

        // Move on if user has not published a post (yet).
        if ( ! $post_count ) {
            continue;
        }
    ?>

    <div class="contributor">
        <div class="contributor-info">
            <div class="contributor-avatar"><?php echo get_avatar( $contributor_id, 132 ); ?></div>
            <div class="contributor-summary">
                <h2 class="contributor-name"><?php echo get_the_author_meta( \'display_name\', $contributor_id ); ?></h2>
                <p class="contributor-bio">
                    <?php echo get_the_author_meta( \'description\', $contributor_id ); ?>
                </p>
                <a class="button contributor-posts-link" href="<?php echo esc_url( get_author_posts_url( $contributor_id ) ); ?>">
                    <?php printf( _n( \'%d Article\', \'%d Articles\', $post_count, \'twentyfourteen\' ), $post_count ); ?>
                </a>
            </div><!-- .contributor-summary -->
        </div><!-- .contributor-info -->
    </div><!-- .contributor -->

    <?php
    endforeach;
}
只需在模板文件中将其称为

twentyfourteen_list_authors();

SO网友:gmazzap

WordPress中没有执行此任务的默认方法,因为Pieter Goosen 指出,存在论点who 对于get_users() 它返回可以发布的用户,而不是已经发布的用户。

但是,您可以使用\'pre_user_query\' 添加JOIN SQL子句只获取至少有一篇文章的用户。

老实说,当您查询按帖子数量排序的用户时,连接已经由WordPress创建,但使用OUTER LEFT JOIN, 因此,即使没有帖子的用户也会被返回,因此您唯一需要的就是替换OUTER LEFT JOIN 到aINNER JOIN

function filter_users_have_posted( $user_query ) {
   $user_query->query_from = str_replace( \'LEFT OUTER\', \'INNER\', $user_query->query_from );
   remove_action( current_filter(), __FUNCTION__ );
}

add_action( \'pre_user_query\', \'filter_users_have_posted\' );

$blogusers = get_users( \'orderby=post_count&order=desc\' );

SO网友:Michael Ecklund

自版本4.3.0, 现在可以指定参数has_published_postsget_users(); 函数调用。

通过anarray 将结果筛选给在这些帖子类型中发布帖子的用户。true 是所有公共帖子类型的别名。

<小时>

Example

if ( $users = get_users( array(
    \'orderby\'             => \'nicename\',
    \'order\'               => \'ASC\',
    \'has_published_posts\' => array( \'post\' ),
    \'blog_id\'             => absint( get_current_blog_id() )
) ) ) {
    print_r( $users );
}
<小时>

Resources

结束

相关推荐

Background image in posts

我正在尝试让特色图像显示在每个标准帖子格式帖子的背景图像中。因此,我成功地抓取了图像,并能够使其在容器内的宽度和高度达到100%。但是,它会显示为图像并按下下面的文本。如何让帖子中的文本显示在其上方?这是我的密码。所容纳之物php<section class=\"m-feat-img\"> <?php $standard_img = wp_get_attachment_image_src( get_post_thumbnail_id($post->I