MySQL查询两个数据库表:USERS和USERMETA,并按自定义元整数值排序

时间:2011-03-07 作者:estern23

我试图获得一个按自定义元值(int)排序的站点用户数组。

我可以很好地查询用户,并将其返回到foreach中使用。目前,我已经按照用户表中的display\\u name对查询结果进行了排序。我希望它按自定义usermeta值排序。

有没有关于如何修改此查询以完成此操作的想法?

function get_all_top_members() {
    global $wpdb;
   $gather_users = "SELECT * FROM ".$wpdb->prefix."users ORDER BY display_name ASC";
$all_users = $wpdb->get_results($gather_users);
return $all_users;
}

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

你不会在meta_value 列,因为存储在那里的值不被视为整数值,但您可以使用类似于使用WordPress back时的方法meta_value_num 要进行排序,基本上需要在数据的前面添加一个数字。

function get_users_ordered_by_meta( $key = \'\', $d = \'ASC\' ) {
    global $wpdb;
    $d = ( strtoupper( $d ) == \'DESC\' ) ? \'DESC\' : \'ASC\';
    if( \'\' == $key )
        return;
    $r = $wpdb->get_results( $wpdb->prepare( "
        SELECT u.ID, u.display_name, u.user_nicename, um.meta_value 
        FROM {$wpdb->usermeta} um, {$wpdb->users} u
        WHERE um.user_id = u.ID
        AND um.meta_key = %s
        ORDER by (0 + um.meta_value) $d
    ", $key ) );
    return $r;
}
这样就可以对meta-value列进行适当的排序。

我想你可能会喜欢一个函数,这样你就可以在任何需要它的地方调用它,只需将你为用户设置的元键传递给它,并可以选择更改排序顺序。

$yourvar = get_users_ordered_by_meta(\'your-key\');
降序排序。

$yourvar = get_users_ordered_by_meta(\'your-key\', \'desc\');
您将像以前一样返回一个对象数组,因此我假设您知道如何循环该数据并将其用于显示,等等。。。(如果没有,请发表评论)。

SO网友:Bainternet

尝试:

global $wpdb;
$gather_users = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE $wpdb->usermeta.meta_key = \'META_KEY_HERE\' ORDER BY $wpdb->usermeta.meta_value ASC");
$all_users = $wpdb->get_results($gather_users);
return $all_users;
并将此处的META\\u KEY\\u更改为您的META KEY

SO网友:Brandt Solovij

你们做的工作太多了:https://codex.wordpress.org/Class_Reference/WP_User_Query

$args = array(
    \'meta_query\' => array(
        array(
            array(
                \'key\'     => \'YOUR_KEY\',
                \'value\'   => \'whatever_value_you\\\'re_looking_for\',
                \'compare\' => \'=\'
            )
        )
    )
 );
$user_query = new WP_User_Query( $args );
与其他WP{{Query}}类型约定一样,您可以按orderby、限制结果计数等。。。

https://codex.wordpress.org/Class_Reference/WP_User_Query

编辑-警告:这假设您正在将自定义用户数据分配给wp\\U core Expected user表-在OP中看起来您就是这样的。对于自定义表,您需要使用另一个用户描述的$wpdb方法

结束