按自定义顺序对Get_Users()中的用户进行排序

时间:2012-10-06 作者:nicolas

<?php
$blogusers = get_users(\'include=5,6,2,7,12,8\');
foreach ($blogusers as $user) {
...         
}
?>
现在,这些用户将按名字排序。

如何按数字的顺序排序include=...?

示例:

用户5第一、用户6第二、用户2第三等。

3 个回复
SO网友:Pieter Goosen

有一种比@Warface的方法更简单、更快的方法。这是对@SyHolloway的扩展

这里的概念是包装get_users() 在一个新函数中,可以对结果进行排序get_users()include 参数使用usort 然后返回按排序的结果数组include

此功能不提供fieldsinclude 参数已设置。all 是唯一有效的值。您可以扩展该函数,使其与fields 参数何时include 正在使用中。否则,如果include 未设置,则fields 参数正常工作。

当然,orderbyorderinclude 已使用

此新功能的操作和使用方式与get_users(), 除上述规定外

下面是函数

function get_users_by_include( $args = array() ) {
    $blogusers = get_users( $args );

    if( isset( $args[\'include\'] ) ){
        $include = $args[\'include\'];
        usort($blogusers, function ($a, $b) use( $include ){
            $q = array_flip( $include ); 
            return $q[$a->ID] - $q[$b->ID];
        });
    }

    return $blogusers;
}
您现在可以在模板中使用它,如下所示

$users = get_users_by_include(array( \'include\' => array(2,5,1,10,45,32,66) ) );
foreach ( $users as $user ) {
    echo $user->ID . \'</br>\';
}

SO网友:Sy Holloway

Wordpress返回一个对象数组<您是否尝试过使用“orderby”作为额外参数?eg

<?php
$blogusers = get_users(\'include=5,6,2,7,12,8&orderby=id\');
foreach ($blogusers as $user) {
    //This will loop in the order of id 2,5,6,7,12  
}
?>
现在您知道了ID的顺序,可以使用一些php数组排序函数

还有更多php maunual

这不是一个完全的解决方案,但应该会让你走上正轨。

SO网友:Warface

因为WP不遵守include 数组,我制作了一个小脚本来实现它。

$user_id = array(2,5,1,10,45,32,66);

foreach($user_id as $uid):
    $user_query = get_users(array(\'role\'=>\'member\', \'number\' => 1,\'include\' => $uid));
    echo $user_query[0]->ID // or display_name like you like...
endforeach;
我知道每次查询数据库时都会有点跛脚,但嘿,它可以工作。

结束

相关推荐

Sorting a query Field by date

我有我的网站,目前是显示大学开放日,目前他们是按页面标题的顺序排序,而实际上我更希望他们按日期排序,最早排在第一,最晚排在最后。下面是我到目前为止的代码,我似乎无法确定如何按日期顺序对它们进行排序,有什么帮助吗?<?php query_posts(\'post_type=page&post_parent=2&posts_per_page=-1&orderby=title&order=ASC\'); ?> <?php if ( have_posts(