DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Related

  • How to Use AI With WordPress
  • Hello Woo. Writing Your First Script Using the Woocommerce API
  • Easy Microdata in WordPress
  • Deploy WordPress on Kubernetes in 15 Minutes Using Helm

Trending

  • Debugging With Confidence in the Age of Observability-First Systems
  • AI Speaks for the World... But Whose Humanity Does It Learn From?
  • Driving DevOps With Smart, Scalable Testing
  • Navigating the LLM Landscape: A Comparative Analysis of Leading Large Language Models

Display A List Of Authors On WordPress

By 
Paul Underwood user avatar
Paul Underwood
·
Apr. 30, 13 · Interview
Likes (0)
Comment
Save
Tweet
Share
11.3K Views

Join the DZone community and get the full member experience.

Join For Free

On some blogs it is important to post on a regular basis, but this can be difficult unless blogging is your full time job.

For a single person to regularly post awesome blog posts everyday can take up a lot of time. For this reason many blogs have a number of authors, this helps keep the content regular and high quality to ensure a better blog.

On a single author blog you will normally find an about page that will tell you information about the author. You can do this on a multi author blog but you also need to create a page that will display all the authors on the blog so you can link to each of their posts.

If you want to create a page to display all the authors you have two options, you can create a new page template which will allow you to code the layout of the page to show all the authors. The other option is to create a shortcode where the user of the site can use this on a new page content to create a list of all the authors.

The two options should be decided on if you are going to add this functionality in a plugin or a theme. If you are going to add this functionality to the theme then you should use a page template, if you want to use the shortcode then you should do this with a plugin. In this tutorial we are going to create a page template to display all the authors on the site.

Create A Page Template

First start off by creating a new page template for your list of all authors.

/*
Template Name: Display All Authors
*/


The next thing we need to do is get a list of all users on the WordPress site that could write a post. This is all the users apart from the users with the subscriber role, the best way of getting a list of all users is to use the function get_users().

This will return an array of all users on your site, it takes a number of different parameters such as:

  • blog_id - The current blog's ID, unless multisite is enabled and another ID is provided
  • role - Limit the returned authors to the role specified.
  • include - An array of IDs. Only users matching these IDs will be returned.
  • exclude - An array of IDs. Users matching these IDs will not be returned, regardless of the other arguments.
  • meta_key - The meta_key in the wp_usermeta table for the meta_value to be returned.
  • meta_value - The value of the meta key.
  • meta_compare - Operator to test the 'meta_value'. Possible values are '!=', '>', '>=', '<', or '<='. Default value is '='.
  • meta_query - A WP_Query style multiple meta_key/meta_value array.
  • orderby - Sort by 'ID', 'login', 'nicename', 'email', 'url', 'registered', 'display_name', or 'post_count'.
  • order - ASC (ascending) or DESC (descending).
  • offset - The first n users to be skipped in the returned array.
  • search - Use this argument to search users by email address, URL, ID or username (this does not currently include display name).
  • number - Limit the total number of users returned.
  • count_total - False by default.
  • fields - Which fields to include in the returned array. Default is "all". If set to 'all_with_meta', returns an array of WP_User objects keyed by ID.
  • who - If set to 'authors', only authors (user level greater than 0) will be returned.

The parameters that we are going to be using is the orderby and order parameters. This is because we are going to use the orderby parameter to display the authors in order of the amount of posts they have wrote. Then we are going to use the order parameter to order the users is DESC order to display the the user with the most posts first.

The other parameter that we could use is the role parameter to bring a back users with a specific role, or we can leave this blank to bring back all users. For this author list we want to display all users except for users with the subscriber role, so we are going to leave this blank and return all users.

$allUsers = get_users('orderby=post_count&order=DESC');

As we have all the users we need to filter these and remove the users with the subscriber role, this can easily be done by looping through all the users, checking their role and creating a new array for user's which are not subscribers.

$users = array();
// Remove subscribers from the list as they won't write any articles
foreach($allUsers as $currentUser)
{
	if(!in_array( 'subscriber', $currentUser->roles ))
	{
		$users[] = $currentUser;
	}
}

Now we have a new $users array which is populated with all users which are not subscribers, we can now loop through this array to display each user on the page.

The user information we are going to display is the user name, user image, a link to all their posts, author description and links to add author meta information.

<?php
foreach($users as $user)
{
	?>
<div class="author">
<div class="authorAvatar"></div>
<div class="authorInfo">
<h2 class="authorName"></h2>
<p class="authorDescrption"></ p>
<p class="authorLinks"></ p>
<p class="socialIcons"></ p>
		</div>
</div>
<?php
}
?>

Display Author Avatar

To display the author avatar we can use the author email with the function get_avatar() to display the author avatar.

<div class="authorAvatar">
	<?php echo get_avatar( $user->user_email, '128' ); ?>
</div>

Display Author Name

To display the author name we can use a property value on the user object we are looping through by using $user->display_name;

<h2 class="authorName"><?php echo $user->display_name; ?></h2>

Display Author Description

To display the author description we can use the function get_user_meta() to get the author description.

<p class="authorDescrption"><?php echo get_user_meta($user->ID, 'description', true); ?>

Link To All Author Posts

To display a link to all the author posts you can use the function get_author_posts_url().

<p class="authorLinks"><a href="<?php echo get_author_posts_url( $user->ID ); ?>">View Author Links</a>

Display Other User Meta Information

You can assign new contact information to your users which you can display on the author list by using the function get_user_meta(). In this tutorial we are using this function to display links to the user different social media profiles.

<p class="socialIcons">
<ul>
	<?php
	$website = $user->user_url;
	if($user->user_url != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $user->user_url, 'Website');
	}
	$twitter = get_user_meta($user->ID, 'twitter_profile', true);
	if($twitter != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $twitter, 'Twitter');
	}
	$facebook = get_user_meta($user->ID, 'facebook_profile', true);
	if($facebook != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $facebook, 'Facebook');
	}
	$google = get_user_meta($user->ID, 'google_profile', true);
	if($google != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $google, 'Google');
	}
	$linkedin = get_user_meta($user->ID, 'linkedin_profile', true);
	if($linkedin != '')
	{
		printf('
<li><a href="%s">%s</a></li>
', $linkedin, 'LinkedIn');
	}
?>
</ul>

By putting the above code inside the loop you can display all the information you need to show your visitors all about the authors of your blog.

Full Page Template

Here is the full page template you can use on theme.

<?php
/*
Template Name: Display Authors
*/
// Get all users order by amount of posts
$allUsers = get_users('orderby=post_count&order=DESC');
$users = array();
// Remove subscribers from the list as they won't write any articles
foreach($allUsers as $currentUser)
{
	if(!in_array( 'subscriber', $currentUser->roles ))
	{
		$users[] = $currentUser;
	}
}
?>
<?php get_header(); ?>
<section class="content" role="main">
	<?php
		printf('
<h1>%s</h1>
', the_title());
		foreach($users as $user)
		{
			?>
<div class="author">
<div class="authorAvatar">
					<?php echo get_avatar( $user->user_email, '128' ); ?>
				</div>
<div class="authorInfo">
<h2 class="authorName"><?php echo $user->display_name; ?></h2>
<p class="authorDescrption"><?php echo get_user_meta($user->ID, 'description', true); ?>
<p class="authorLinks"><a href="<?php echo get_author_posts_url( $user->ID ); ?>">View Author Links</a>
<p class="socialIcons">
<ul>
							<?php
								$website = $user->user_url;
								if($user->user_url != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $user->user_url, 'Website');
								}
								$twitter = get_user_meta($user->ID, 'twitter_profile', true);
								if($twitter != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $twitter, 'Twitter');
								}
								$facebook = get_user_meta($user->ID, 'facebook_profile', true);
								if($facebook != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $facebook, 'Facebook');
								}
								$google = get_user_meta($user->ID, 'google_profile', true);
								if($google != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $google, 'Google');
								}
								$linkedin = get_user_meta($user->ID, 'linkedin_profile', true);
								if($linkedin != '')
								{
									printf('
<li><a href="%s">%s</a></li>
', $linkedin, 'LinkedIn');
								}
							?>
						</ul>
</div>
</div>
			<?php
		}
	?>
</section>
<?php get_footer(); ?>





WordPress

Published at DZone with permission of Paul Underwood, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • How to Use AI With WordPress
  • Hello Woo. Writing Your First Script Using the Woocommerce API
  • Easy Microdata in WordPress
  • Deploy WordPress on Kubernetes in 15 Minutes Using Helm

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!