按Include参数中使用的用户ID对WP_USER_QUERY结果进行排序

时间:2014-10-30 作者:henrywright

我正在使用WP_User_Query 返回用户列表。我正在传递一个要包含在结果中的特定用户列表。例如:

    $user_ids = array( 1, 5, 9, 61, 24, 12 );

    $args = array(
        \'include\' => $user_ids,
        \'count_total\' => true,
        \'search\' => sanitize_text_field( $_GET[\'phrase\'] )
    );

    $query = new WP_User_Query( $args );
结果当前由排序user_login. 如何修改查询,使返回的结果按$user_id 大堆例如,如果要返回3个用户(比如ID 5、61和12),则应首先显示用户5,其次显示用户61,第三显示用户12。

参考号:http://codex.wordpress.org/Class_Reference/WP_User_Query

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

我认为,与其处理复杂的SQL查询和让WordPress使用它们的方法,不如使用一个简单的uasort 可以做到:

$uids = array( 1 );

$user_query = new WP_User_Query( array( \'include\' => $uids ) );

$users = (array) $user_query->results;

usort( $users, function( $a, $b ) use( $uids ) {
  return array_search( $a->ID, $uids) < array_search( $b->ID, $uids ) ? -1 : 1;
} );

// use as usual
foreach ( $users as $user ) {
    echo \'<p>\' . $user->display_name . \'</p>\';
}

SO网友:Dima Barabash

我知道已经很晚了,但如果有人感兴趣,请尝试:$args[\'orderby\']=“include\';

为我工作。。

结束

相关推荐