我正在尝试重塑我的“用户”页面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(); ?>
答案 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 );