<?php
$blogusers = get_users('include=5,6,2,7,12,8');
foreach ($blogusers as $user) {
...
}
?>
À l'heure actuelle, ces utilisateurs seront triés par prénom.
Comment puis-je trier ceci dans l'ordre où les nombres sont en include=...
?
Exemple:
Utilisateur 5 en premier, utilisateur 6 en second, utilisateur 2 en troisième, etc.
Il existe une méthode plus simple et plus rapide que celle de @Warface. Ceci est une extension à @SyHolloway
Le concept consiste ici à envelopper get_users()
dans une nouvelle fonction dans laquelle vous pouvez trier le résultat de get_users()
à l'aide du paramètre include
à l'aide de usort
, puis renvoyer le tableau résultant trié par include
.
Cette fonction ne permet pas d'utiliser l'argument fields
lorsque le paramètre include
a été défini. all
est la seule valeur qui fonctionnera. Vous pouvez étendre la fonction pour la faire fonctionner avec les autres valeurs du paramètre fields
lorsque include
est en cours d'utilisation. Sinon, si include
n'est pas défini, le paramètre fields
fonctionne normalement.
Naturellement, orderby
et order
ne fonctionneront pas si include
est utilisé
Cette nouvelle fonction fonctionne et est utilisée exactement de la même manière que get_users()
, à l’exception des règles mentionnées ci-dessus.
Voici la fonction
function get_users_by_include( $args = array() ) {
$blogusers = get_users( $args );
if( isset( $args['include'] ) ){
$include = $args['include'];
usort($blogusers, function ($a, $b) use( $include ){
$q = array_flip( $include );
return $q[$a->ID] - $q[$b->ID];
});
}
return $blogusers;
}
Vous pouvez maintenant utiliser ceci dans votre modèle comme suit
$users = get_users_by_include(array( 'include' => array(2,5,1,10,45,32,66) ) );
foreach ( $users as $user ) {
echo $user->ID . '</br>';
}
Wordpress renvoie un tableau d'objets.
Avez-vous essayé d'utiliser 'orderby' comme paramètre supplémentaire? par exemple
<?php
$blogusers = get_users('include=5,6,2,7,12,8&orderby=id');
foreach ($blogusers as $user) {
//This will loop in the order of id 2,5,6,7,12
}
?>
Maintenant que vous savez quel ID sont dans quel ordre, vous pouvez utiliser certaines fonctions de tri des tableaux php
Aussi un peu plus au php maunual
Ce n'est pas une solution totale mais devrait vous mettre sur la bonne voie.
Puisque WP ne respecte pas l'ordre de tableau injecté dans le tableau include
, j'ai créé un petit script pour le réaliser.
$user_id = array(2,5,1,10,45,32,66);
foreach($user_id as $uid):
$user_query = get_users(array('role'=>'member', 'number' => 1,'include' => $uid));
echo $user_query[0]->ID // or display_name like you like...
endforeach;
Je sais que c'est un peu boiteux d'interroger chaque fois la base de données mais bon, ça marche.