我在按自定义meta\\u值排序用户循环时遇到问题。正在读取Codex 对于get_users()
, 它并没有说你可以使用meta_value
用于orderby。当我尝试这样做时,我会得到一个不按meta\\u值排序的用户列表。
<ul>
<?php
$args = array(
\'role\' => \'author\' ,
\'meta_key\' => \'score\',
\'orderby\' => \'meta_value_num\',//Tried meta_value also
\'order\' => \'DESC\',
\'number\' => 5,
);
$blogusers = get_users($args);
foreach ($blogusers as $user) {
echo \'<li>\' . $user->display_name . \'</li>\';
echo get_user_meta($user->ID, \'score\',true);
}
?>
</ul>
因此,我需要做的是通过挂接pre\\u user\\u查询来覆盖orderby函数。我发现
this 但被告知不要使用create\\u函数。那么,按用户meta\\u值排序用户列表的正确方法是什么呢?
最合适的回答,由SO网友:MaximOrlovsky 整理而成
尝试此代码,但替换METAKEY
到元数据的键名称。
<?php
function cmp( $a, $b )
{
if( $a->METAKEY == $b->METAKEY ){ return 0 ; }
return ($a->METAKEY < $b->METAKEY ) ? -1 : 1;
}
?>
<ul>
<?php
$args = array(
\'role\' => \'author\' ,
\'meta_key\' => \'METAKEY\',
\'number\' => 5,
);
$blogusers = get_users($args);
usort($blogusers ,\'cmp\');
foreach ($blogusers as $user) {
echo \'<li>\' . $user->display_name . \'</li>\';
echo get_user_meta($user->ID, \'METAKEY\', true);
}
?>
</ul>