How to paginate the get_users function?

Im using the get_users function to show a custom list of users on the site. The only issue Im having a problem figuring out now is how to paginate the result.

This is a sample of the function that Im using:

Read More

Sample Code Screen shot

There doesn’t seem to be an obvious way of creating a pagination for the this function. I would appreciate some help with this.

Related posts

Leave a Reply

1 comment

  1. First get the total number of users:

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

    and the current page:

    $paged = get_query_var('paged');
    

    Set a variable that will decide how many users to display per page:

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

    Then, in your $args array add the offset if the current page != 0, and the max number of users to return:

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

    Now add your code from above, and create the page links:

    // 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);
    }
    

    See paginate_links() for a full list of arguments….