Authors list Pagination?

WordPress has a built in function to display a list of all of your site’s authors. But there is no option to display their avatars, so all you really get is a text list that links to the author’s page, if you have an author.php file in your theme, that is.

thus turning the internet I found this nice tutorial bavotasan.com with a little piece of code that seems to do the trick.

Read More

On my site all users can write articles and list of contributors is long. It’s possible set 10 users for page ?

Using this solution: Paginate result set from $wpdb->get_results()

I did make my code for Authors list functions as follow:

    function contributors() {
global $wpdb;

$authors = $wpdb->get_results("SELECT ID, user_nicename from $wpdb->users WHERE display_name <> 'admin' ORDER BY display_name");

$authors_per_page = 10;
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;

echo paginate_links( array(
    'base' => add_query_arg( 'cpage', '%#%' ),
    'format' => '',
    'prev_text' => __('«'),
    'next_text' => __('»'),
    'total' => ceil($total / $authors_per_page),
    'current' => $page
));

foreach ($authors as $author ) {

echo "<li>";
echo "<a href="".get_bloginfo('url')."/author/";
the_author_meta('user_nicename', $author->ID);
echo "/">";
echo get_avatar($author->ID);
echo "</a>";
echo '<div>';
echo "<a href="".get_bloginfo('url')."/author/";
the_author_meta('user_nicename', $author->ID);
echo "/">";
the_author_meta('display_name', $author->ID);
echo "</a>";
echo "<br />";
echo "SitoWeb: <a href="";
the_author_meta('user_url', $author->ID);
echo "/" target='_blank'>";
the_author_meta('user_url', $author->ID);
echo "</a>";
echo "<br />";
echo "Twitter: <a href="http://twitter.com/";
the_author_meta('twitter', $author->ID);
echo "" target='_blank'>";
the_author_meta('twitter', $author->ID);
echo "</a>";
echo "<br />";
echo "<a href="".get_bloginfo('url')."/author/";
the_author_meta('user_nicename', $author->ID);
echo "/">Visita il Profilo di ";
the_author_meta('display_name', $author->ID);
echo "</a>";
echo "</div>";
echo "</li>";
}
}

but still does the trick ….. Please help me to find out the error and its rectification. Thanks a lot.

Related posts

Leave a Reply

3 comments

  1. I have modified WP_LIST_AUTHORS to paginate. I don’t know if its very sexy, and seems to require some sort of Caching plugin otherwise this particular page can start to load pretty slowly.

    The full code of my paginated function is in this thread: Modifying WP_LIST_AUTHOR Functions to output all users in a grid (and Paginate)

    If you just want to look directly at the pagination code I used you can go here: http://www.phpfreaks.com/tutorial/basic-pagination

  2. In your case you can save your time the trouble by using Members List Plugin

    which allows you to create a post on your
    wordpress blog that lists all your
    wordpress members. When viewing the
    list of members you can also search
    through your members according to
    first name, last name, email address,
    URL or any other number of user meta
    fields you may specify. Employing
    pagination you can page through your
    search results and sort your results
    according to last name, first name,
    registration date or email.

  3. if I add this code as I recall it in the loop?

    // Get the current page
    $paged = get_query_var('paged');
    if (!$paged) $paged = 1;
    
    // We'll return these at a later stage
    $current_page = $paged;
    $total_pages = ceil(count($authors) / 10);
    
    // Calculate the starting and ending points
    // Assuming we'll be showing 10 authors per page
    $start = ($paged - 1) * 10;
    $end = $paged * 10;
    if ($end > count($authors)) $end = count($authors);