wp_list_authors( string|array $args = '' ): void|string

Lists all the authors of the site, with several options available.


Parameters

$args string|array Optional
Array or string of default arguments.
  • orderbystring
    How to sort the authors. Accepts 'nicename', 'email', 'url', 'registered', 'user_nicename', 'user_email', 'user_url', 'user_registered', 'name', 'display_name', 'post_count', 'ID', 'meta_value', 'user_login'. Default 'name'.
  • orderstring
    Sorting direction for $orderby. Accepts 'ASC', 'DESC'. Default 'ASC'.
  • numberint
    Maximum authors to return or display. Default empty (all authors).
  • optioncountbool
    Show the count in parenthesis next to the author's name. Default false.
  • exclude_adminbool
    Whether to exclude the 'admin' account, if it exists. Default true.
  • show_fullnamebool
    Whether to show the author's full name. Default false.
  • hide_emptybool
    Whether to hide any authors with no posts. Default true.
  • feedstring
    If not empty, show a link to the author's feed and use this text as the alt parameter of the link.
  • feed_imagestring
    If not empty, show a link to the author's feed and use this image URL as clickable anchor.
  • feed_typestring
    The feed type to link to. Possible values include 'rss2', 'atom'.
    Default is the value of get_default_feed() .
  • echobool
    Whether to output the result or instead return it. Default true.
  • stylestring
    If 'list', each author is wrapped in an <li> element, otherwise the authors will be separated by commas.
  • htmlbool
    Whether to list the items in HTML form or plaintext. Default true.
  • excludeint[]|string
    Array or comma/space-separated list of author IDs to exclude.
  • includeint[]|string
    Array or comma/space-separated list of author IDs to include.

Default: ''


Top ↑

Return

void|string Void if 'echo' argument is true, list of authors if 'echo' is false.


Top ↑

More Information

Displays a list of the sites’s authors (users), and if the user has authored any posts, the author name is displayed as a link to their posts. Optionally this tag displays each author’s post count and RSS feed link.


Top ↑

Source

File: wp-includes/author-template.php. View all references

function wp_list_authors( $args = '' ) {
	global $wpdb;

	$defaults = array(
		'orderby'       => 'name',
		'order'         => 'ASC',
		'number'        => '',
		'optioncount'   => false,
		'exclude_admin' => true,
		'show_fullname' => false,
		'hide_empty'    => true,
		'feed'          => '',
		'feed_image'    => '',
		'feed_type'     => '',
		'echo'          => true,
		'style'         => 'list',
		'html'          => true,
		'exclude'       => '',
		'include'       => '',
	);

	$args = wp_parse_args( $args, $defaults );

	$return = '';

	$query_args           = wp_array_slice_assoc( $args, array( 'orderby', 'order', 'number', 'exclude', 'include' ) );
	$query_args['fields'] = 'ids';
	$authors              = get_users( $query_args );

	$author_count = array();
	foreach ( (array) $wpdb->get_results( "SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE " . get_private_posts_cap_sql( 'post' ) . ' GROUP BY post_author' ) as $row ) {
		$author_count[ $row->post_author ] = $row->count;
	}
	foreach ( $authors as $author_id ) {
		$posts = isset( $author_count[ $author_id ] ) ? $author_count[ $author_id ] : 0;

		if ( ! $posts && $args['hide_empty'] ) {
			continue;
		}

		$author = get_userdata( $author_id );

		if ( $args['exclude_admin'] && 'admin' === $author->display_name ) {
			continue;
		}

		if ( $args['show_fullname'] && $author->first_name && $author->last_name ) {
			$name = "$author->first_name $author->last_name";
		} else {
			$name = $author->display_name;
		}

		if ( ! $args['html'] ) {
			$return .= $name . ', ';

			continue; // No need to go further to process HTML.
		}

		if ( 'list' === $args['style'] ) {
			$return .= '<li>';
		}

		$link = sprintf(
			'<a href="%1$s" title="%2$s">%3$s</a>',
			esc_url( get_author_posts_url( $author->ID, $author->user_nicename ) ),
			/* translators: %s: Author's display name. */
			esc_attr( sprintf( __( 'Posts by %s' ), $author->display_name ) ),
			$name
		);

		if ( ! empty( $args['feed_image'] ) || ! empty( $args['feed'] ) ) {
			$link .= ' ';
			if ( empty( $args['feed_image'] ) ) {
				$link .= '(';
			}

			$link .= '<a href="' . get_author_feed_link( $author->ID, $args['feed_type'] ) . '"';

			$alt = '';
			if ( ! empty( $args['feed'] ) ) {
				$alt  = ' alt="' . esc_attr( $args['feed'] ) . '"';
				$name = $args['feed'];
			}

			$link .= '>';

			if ( ! empty( $args['feed_image'] ) ) {
				$link .= '<img src="' . esc_url( $args['feed_image'] ) . '" style="border: none;"' . $alt . ' />';
			} else {
				$link .= $name;
			}

			$link .= '</a>';

			if ( empty( $args['feed_image'] ) ) {
				$link .= ')';
			}
		}

		if ( $args['optioncount'] ) {
			$link .= ' (' . $posts . ')';
		}

		$return .= $link;
		$return .= ( 'list' === $args['style'] ) ? '</li>' : ', ';
	}

	$return = rtrim( $return, ', ' );

	if ( $args['echo'] ) {
		echo $return;
	} else {
		return $return;
	}
}


Top ↑

Changelog

Changelog
Version Description
1.2.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Codex

    Authors full names and number of posts
    This example displays a list of the site’s authors with the full name (first and last name) plus the number of posts for each author. Note the output is in descending order by the post count, and limited to three (3) authors/users. Also, and by default, it excludes the admin author, hides authors with no posts, and does not display the RSS feed or image.

    wp_list_authors( array(
    	'show_fullname' => 1,
    	'optioncount'   => 1,
    	'orderby'       => 'post_count',
    	'order'         => 'DESC',
    	'number'        => 3
    ) );

    Example output:

    Andrew Anderson (48)
    Harriett Smith (42)
    Sally Smith (29)

You must log in before being able to contribute a note or feedback.