最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

users - Wp_User_Query not sorting by meta key

programmeradmin0浏览0评论

I'm trying to list users sorted by a meta value. I store a score for each user in their user meta which is just a number but the loop isn't sorting. I include the score in the loop so that I can see that it's not being sorted correctly. What am I doing wrong?

 $args = array(
    'meta_key' => 'score',
    'meta_value' => 0,
    'meta_compare' => '>',
    'orderby' => 'meta_value_num',
    'number' => 20
 );
 $suggested_user_query = new WP_User_Query( $args );
 $users = $suggested_user_query->get_results();
 echo '<div id="user_suggest">';
     echo '<ul>';
     foreach ($users as $user) {
         // get all the user's data
         $user_info = get_userdata($user->ID);
         echo '<li>';
     echo '<h3>'.bp_core_get_user_displayname( $user->ID ).'</h3>';
     $score = get_user_meta( $user->ID, 'score', true );
         echo $score;
         echo '</li>';
     }
     echo '</ul>';     
 echo '</div>';

I'm trying to list users sorted by a meta value. I store a score for each user in their user meta which is just a number but the loop isn't sorting. I include the score in the loop so that I can see that it's not being sorted correctly. What am I doing wrong?

 $args = array(
    'meta_key' => 'score',
    'meta_value' => 0,
    'meta_compare' => '>',
    'orderby' => 'meta_value_num',
    'number' => 20
 );
 $suggested_user_query = new WP_User_Query( $args );
 $users = $suggested_user_query->get_results();
 echo '<div id="user_suggest">';
     echo '<ul>';
     foreach ($users as $user) {
         // get all the user's data
         $user_info = get_userdata($user->ID);
         echo '<li>';
     echo '<h3>'.bp_core_get_user_displayname( $user->ID ).'</h3>';
     $score = get_user_meta( $user->ID, 'score', true );
         echo $score;
         echo '</li>';
     }
     echo '</ul>';     
 echo '</div>';
Share Improve this question edited Oct 29, 2012 at 23:17 kaiser 50.9k27 gold badges150 silver badges245 bronze badges asked Oct 29, 2012 at 19:48 Pollux KhafraPollux Khafra 8884 gold badges25 silver badges50 bronze badges 3
  • Why not just order by meta_value_num, why would you compare each one to 0? – Wyck Commented Oct 29, 2012 at 21:35
  • Doest work that way either but I need to leave out 0 scored and negatives – Pollux Khafra Commented Oct 29, 2012 at 22:31
  • Did you get the answer? – tru.d Commented Nov 18, 2019 at 6:59
Add a comment  | 

1 Answer 1

Reset to default 0

you can try this code

 $args = array(
            'meta_query' => array(
                    array(
                        'key'     => 'score',
                        'value'   => 0,
                        'compare' => '>',
                        'type'    => 'numeric'
                    )
            ),
            'orderby' => 'meta_value_num',
            'number' => 20
 );

 $suggested_user_query = new WP_User_Query( $args );
 $users = $suggested_user_query->get_results();
 echo '<div id="user_suggest">';
            echo '<ul>';
                foreach ($users as $user) {
                 // get all the user's data
                 $user_info = get_userdata($user->ID);
                 echo '<li>';
                echo '<h3>'.bp_core_get_user_displayname( $user->ID ).'</h3>';
                $score = get_user_meta( $user->ID, 'score', true );
                 echo $score;
                 echo '</li>';
                }
            echo '</ul>';     
 echo '</div>';

For more information you can check this link https://codex.wordpress/Class_Reference/WP_User_Query

发布评论

评论列表(0)

  1. 暂无评论