我显示了具有get_users的所有站点(订阅者除外)用户的列表,但将out限制为15(然后是所有作者的静态链接)。我按显示名称排序,因此按名字按字母顺序排列。但如果有40个用户,那么前15个将是A-L,但总是不用M-Z。
所以我可以通过帖子计数为15的随机列表订购,但是如何按字母顺序排列该列表呢?
<?php
// Get all users order by amount of posts
$allUsers = get_users('orderby=display_name&number=15');
$users = array();
// Remove subscribers from the list as they won't write any articles
foreach($allUsers as $currentUser) {
if(!in_array( 'subscriber', $currentUser->roles )) {
$users[] = $currentUser;
}
}
?>
<h3 class="text-uppercase">
Contributors
</h3>
<div class="contributor-names">
<?php foreach($users as $user) { ?>
<span>
<a href="<?php echo get_author_posts_url( $user->ID ); ?>" title="Read Articles" class="black-link">
<?php echo $user->display_name; ?>
</a>
</span>
<?php } ?>
<a href="/colophon/contributors/" title="All Contributors" class="btn btn-primary">All Contributors</a>
</div>
答案 0 :(得分:0)
如果要排除订阅者,更好的解决方案是在查询用户时使用“排除”键,因为前15个用户可能是订阅者,并且在应用过滤器时最终没有用户。请尝试以下代码来获取已过滤的用户。
$subscribers = get_users( array('role' => 'subscriber' ,'fields' => 'ID') );
if ( !empty($subscribers ))
$subscribers_str = implode(',', $subscribers);
else
$subscribers_str = '';
$args = array(
'number' => 15,
'orderby' => 'display_name',
'order' => 'ASC',
'exclude' => $subscribers_str
);
$allUsers = get_users($args);