如何从用户列表中排除没有帖子的用户?

时间:2015-11-03 18:24:09

标签: php wordpress

我正在尝试重塑我的“用户”页面here以获取Wordpress网站。

我想从列表中排除那些没有写过任何帖子的贡献者。

在这种情况下,列表是按角色 - >贡献者;我知道我可以将具有0个帖子的用户的角色更改为“订阅者”或类似。但我希望有一个更流畅的解决方案。

感谢您的帮助。

 <?php

/*
Template Name: Display Contributors and Authors
*/

    $args = array(
         'role'    => 'contributor',
         'orderby' => 'post_count',
         'order'   => 'DESC'
    );
    $contributors = get_users( $args );

    ?>

<?php get_header();?>
<div id="main">
<div id="primary" class="three-parts archive">
<div class="widget-title">
        <?php the_title(); ?>
</div>
    <div id="blog-list" class="blog-category">
    <ul>    
        <?php

        foreach($contributors as $contributor) 

     {

        ?>
        <li style="margin-top: 10px; width:25%;">   
            <div class="blog-post-image">
                <div class="image_fx5">
                    <a href=<?php echo get_author_posts_url( $contributor->ID ); ?>><?php echo get_avatar( $contributor->user_email, '128' ); ?></a>
                </div>
            </div>
                <!--author-image-->
                <div class="blog-post-title-box">
                    <div class="blog-post-title">
                    <h2>
                    <a href=<?php echo get_author_posts_url( $contributor->ID ); ?>><?php echo $contributor->display_name; ?></a>
                    </h2>
                    </div>
                </div>
                <!--author-name-->
                    <div class="blog-post-content" style="padding-bottom: 0px; text-align: justify;">
                    <?php echo $contributor->description; ?>
                    </div>
                    <div id="author-info" style="margin-top: 0px; padding-left: 0px; padding-right: 0px; border-bottom-width: 0px;">
                    <div id="author-desc" style="width: 100%;">
                    <ul class="author-social" style="padding-top: 0px;">
                    <?php if($contributor->facebook) { ?>
                    <li style="
    margin-top: 0px;
    padding-left: 0px;
    padding-right: 0px;
    height: 25px;
">
                        <a href="http://facebook.com/<?php echo $contributor->facebook; ?>" class="fb-social-icon" target="_blank">
                        </a>
                    </li>
                    <?php } ?>
                    <?php if($contributor->twitter) { ?>
                    <li style="
    margin-top: 0px;
    padding-left: 0px;
    padding-right: 0px;
    height: 25px;
">
                        <a href="https://twitter.com/<?php echo $contributor->twitter; ?>" class="twitter-social-icon" target="_blank">
                        </a>
                    </li>
                    <?php } ?>
                    <?php if($contributor->google) { ?>
                    <li style="
    margin-top: 0px;
    padding-left: 0px;
    padding-right: 0px;
    height: 25px;
">
                        <a href="http://plus.google.com/<?php echo $contributor->google; ?>?rel=author" class="google-social-icon" target="_blank">
                        </a>
                    </li>
                    <?php } ?>
                    <?php if($contributor->pinterest) { ?>
                    <li style="
    margin-top: 0px;
    padding-left: 0px;
    padding-right: 0px;
    height: 25px;
">
                        <a href="http://www.pinterest.com/<?php echo $contributor->pinterest; ?>?rel=author" class="pinterest-social-icon" target="_blank">
                        </a>
                    </li>
                    <?php } ?>
                    <?php if($contributor->instagram) { ?>
                    <li style="
    margin-top: 0px;
    padding-left: 0px;
    padding-right: 0px;
    height: 25px;
">
                        <a href="http://www.instagram.com/<?php echo $contributor->instagram; ?>?rel=author" class="instagram-social-icon" target="_blank">
                        </a>
                    </li>
                    <?php } ?>
                    </ul>
                    </div>
                    </div>
                    <!--author-desc-->
        </li>
            <?php } ?>
        </ul>
    </div>
</div>
        <!--primary-->
    <div id="secondary">
        <?php if (!function_exists('dynamic_sidebar') || !dynamic_sidebar('Category Sidebar')): endif; ?>
    </div>
    <!--secondary-->
</div>
<!--main-->
<?php get_footer(); ?>

1 个答案:

答案 0 :(得分:3)

get_users()使用WP_Query对象,然后将您的参数传递给WP_User_Query::prepare_query()。如果您参考此函数的上一个链接文档,您会在底部看到一个名为“has_published_posts”的参数。

  

<强> 'has_published_posts'   (bool | array)传递一系列帖子类型,以便将结果过滤给已在这些帖子类型中发布帖子的用户。 true是所有公开帖子类型的别名。

因此,如果您为此参数传递true,则只会获得已发布公开post_types帖子的用户列表。

// only return users with published posts
$args['has_published_posts'] = true;
// run the WP_Query
$contributors = get_users( $args );