我正试图根据用户元价值在我的wordpress博客中获得前10名用户。
我尝试了几种方法&;最终能够使用下面的wpdb查询获得排名前一位的用户。但我们不知道如何才能获得前十名用户。
$top10alltime = $wpdb->get_row( "SELECT MAX( CAST( meta_value AS UNSIGNED ) ) AS top_user FROM $wpdb->usermeta WHERE meta_key = \'alltimeusers\'" );
echo $top10alltime->top_user;
是的
$wpdb
是否符合此目的?或者有没有其他解决方案可以做到这一点?使用
WP_User_Query
?
我试过用WP_User_Query
.
foreach ( $users as $var => $order ) {
$query->query(
array(
\'count_total\' => false,
\'meta_key\' => \'todayuserclicks\',
\'orderby\' => \'meta_value\',
\'fields\' => \'ID\',
\'number\' => 10,
\'order\' => $order,
)
);
在这之后我不能完成这件事。。我们怎样才能做到这一点?
SO网友:Nicolai Grossherr
通过使用get_users()
我的意思大致如下:
$args = array(
\'meta_query\' => array(
array(
\'key\' => \'todayuserclicks\',
\'compare\' => \'EXISTS\'
)
),
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
\'number\' => \'10\',
\'fields\' => \'all_with_meta\', // does NOT return meta, see below note
);
$todayuserclicks_top_10 = get_users( $args );
注:
即使使用参数fields
设置为all_with_meta
结果中不包含post meta值。的文档WP_User_Query
- Return Fields Parameter 它说:
“all\\u with\\u meta”当前返回与“all”相同的字段,其中不包括存储在wp\\u usermeta中的用户字段。您必须创建第二个查询来按ID获取用户元字段,或者使用\\uu get PHP magic方法来获取这些字段的值。