Wordpress:按帖子计数的get_users,但按名字按字母顺序显示

时间:2015-09-14 11:54:46

标签: wordpress

我显示了具有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>

1 个答案:

答案 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);