Tenho quase certeza que essa não é a melhor forma (sem usar algum plugin) para listar todos os usuários cadastrados no seu blog/site com o WordPress de um determinado perfil, mas no caso em que a performance não é gargalo, não vi problemas:
- faça um select na tabela de usuários, retornando todos os ids
- percorra a lista de ids, retornando cada usuário relativo a esse id
- faz um if para checar o user_level. É ele que define o perfil do usuário
O código seria:
<?php
$aUsersID = $wpdb->get_col( $wpdb->prepare("SELECT $wpdb->users.ID FROM $wpdb->users ORDER BY %s ASC", ""));
foreach ( $aUsersID as $iUserID ) :
$user = get_userdata( $iUserID );
if($user->user_level==2) { //2 é o user_level para contribuidor
//faz o que for necessário com o objeto $user
}
endforeach;
?>
Pelo que pude ver da estrutura da base do WordPress, que eu ainda estou conhecendo, há uma tabela wp_users que tem os usuários e uma outra, wp_usermeta, de metadados. Não entendi porque user_level não faz parte da wp_users pois está ligado diretamente ao usuário (será que nas primeiras versões não existia esse campo e depois criaram como um metadado?), mas certamente um inner join poderia resolver mais elegantemente essa questão.