覆盖orderby以按自定义META_VALUE创建用户列表

时间:2012-06-20 作者:Pollux Khafra

我在按自定义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值排序用户列表的正确方法是什么呢?

1 个回复
最合适的回答,由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>

结束

相关推荐

使用wp_Dropdown_USERS和SELECTED()函数?

我有一个自定义的元框,其中有一个下拉列表,通过WP\\u dropdown\\u users显示所有WP用户。它保存了使用post选择的WP用户,以便所有工作正常。但是,是否有办法使其在返回编辑时在下拉列表中显示选定的用户,而不是列表中的第一个用户?我已经将selected()函数用于另一个下拉列表,但我已经动态创建了它。我尝试用wp\\u dropdown\\u用户实现selected(),但没有成功,所以我不确定这是否可行?谢谢