web-dev-qa-db-fra.com

Comment paginer la fonction get_users?

J'utilise la fonction get_users pour afficher une liste personnalisée d'utilisateurs sur le site. Le seul problème que je rencontre maintenant est de savoir comment paginer le résultat.

Voici un exemple de la fonction que j'utilise:

Sample Code Screen shot

Il ne semble pas y avoir de moyen évident de créer une pagination pour cette fonction. J'apprécierais un peu d'aide avec ceci.

4
user1893

D'abord obtenir le nombre total d'utilisateurs:

$total_users = count_users();
//var_dump($total_users); //for debugging purpose
$total_users = $total_users['total_users'];

et la page actuelle:

$paged = get_query_var('paged');

Définissez une variable qui déterminera le nombre d'utilisateurs à afficher par page:

$number = 20; // ie. 20 users page page 

Ensuite, dans votre tableau $ args, ajoutez le décalage si la page actuelle! = 0 et le nombre maximal d'utilisateurs à renvoyer:

'offset' => $paged ? ($paged - 1) * $number : 0,
'number' => $number,

Maintenant, ajoutez votre code ci-dessus et créez les liens de page:

// display the user list here

if($total_users > $number){

  $pl_args = array(
     'base'     => add_query_arg('paged','%#%'),
     'format'   => '',
     'total'    => ceil($total_users / $number),
     'current'  => max(1, $paged),
  );

  // for ".../page/n"
  if($GLOBALS['wp_rewrite']->using_permalinks())
    $pl_args['base'] = user_trailingslashit(trailingslashit(get_pagenum_link(1)).'page/%#%/', 'paged');

  echo paginate_links($pl_args);
}

Voir paginate_links() pour une liste complète des arguments ....

8
onetrickpony