Como ordenar os usuários em ordem alfabética pelo sobrenome?

4

Eu uso o seguinte shortcode e função para exibir membros de alguns departamentos:

add_shortcode( 'list_of_members', 'members_listing' );
/* usage: [list_of_members department = 'psychology'] */

function members_listing( $department ) {

    $members = get_users( array( 'meta_key' => 'department', 'meta_value' => $department ) ); 

    echo '<ul>';
    foreach ( $members as $member ) {
        echo '<li>' . $member->first_name . ' ' . $member->last_name . '</li>';
    }
    echo '</ul>';
}

Gostaria de ordenar os usuários em ordem alfabética por last_name . Como posso fazer isso?

Eu fui inspirado por essa pergunta / resposta , mas eu não entendi completamente.

    
por Iurie Malai 04.09.2013 / 10:55

3 respostas

7

Por que não usar a funcionalidade interna do PHP?

Coloque a seguinte linha antes do foreach :

usort($members, create_function('$a, $b', 'return strnatcasecmp($a->last_name, $b->last_name);'));

Referências:

por tfrommen 04.09.2013 / 11:00
-1

Eu modifiquei sua função:

add_shortcode( 'list_of_members', 'members_listing' );
/* usage: [list_of_members department = 'psychology'] */

function members_listing( $department ) {

   $members = get_users( array( 'meta_key' => 'department', 'meta_value' => $department, 'orderby' => 'last_name', 'order' => 'DESC' ) ); 

   echo '<ul>';
   foreach ( $members as $member ) {
      echo '<li>' . $member->first_name . ' ' . $member->last_name . '</li>';
   }
   echo '</ul>';
}

Acabou de adicionar mais dois parâmetros dois seus argumentos

    
por Manish 04.09.2013 / 11:22
-1

Adicione orderby = > last_name, order = > DESC em seu argumento get_users. Espero que isso ajude você.

$members = get_users( array( 'meta_key' => 'department', 'meta_value' => $department, 'orderby' => 'last_name', 'order' => 'DESC' ) ); 
    
por ytl 04.09.2013 / 11:06