Author Bio

Do you want to display the author’s biography in every single post? In this post, I will show you how to display the author bio in every single post. The biography section will contain the photo of the author, his/her name, description, and profile link. See the top image as a reference.

Navigate to your WordPress theme, and open the ‘single.php’ and paste the following code where you want to display the post author’s biography. Don’t worry, I will explain the code later:

<section class="author-of-the-post">
    <div class="author-of-the-post--box">
        <div class="photo"><?php echo get_avatar( get_the_author_meta('user_email'), '150' ); ?></div>
        <h3 class="name"><?php the_author_meta('display_name'); ?></h3>
        <p class="description"><?php echo nl2br( get_the_author_meta('description') ); ?></p>
        <a class="profile-link" href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>">See all posts »</a>

Once you save the file, you’ll see the post author’s biography. As I said earlier, it will contain the author’s photo, name, description & link. To stylize it, I wrote some CSS for you. If you wish, feel free to use or customize it:

.author-of-the-post {
  padding: 60px 15px;
  background-color: #E9EBEC;

.author-of-the-post--box {
  max-width: 850px;
  margin: auto;

.author-of-the-post--box .photo {
  width: 150px;
  height: 150px;
  margin: 0 auto;

.author-of-the-post--box .photo img {
  background: -webkit-linear-gradient(left top, #ff711a 30%, #3575D3 100%);
  padding: 5px;
  border-radius: 50%;

.author-of-the-post--box .name {
  font-size: 22px;
  text-align: center;
  margin: 5px;
  font-weight: 400;

.author-of-the-post--box .description {
  font-size: 14px;
  font-style: italic;
  text-align: justify;

.author-of-the-post--box .profile-link {
  display: block;
  text-align: center;
  margin: 5px;
  text-decoration: underline;
  -webkit-transition: 0.5s ease-in;
  transition: 0.5s ease-in;

.author-of-the-post--box .profile-link:hover {
  color: #3575D3;

Once you save your CSS file, the author bio will look like the above (top) image. But there will be a missing background image. To keep things simple, I ignored the background texture & pen image from the CSS. Otherwise, it will look very close to the example.

The code explanation:

get_avatar is a WordPress function that retrieves the gravatar image. It also injects the <img> tag. So you don’t have to include it separately.

Now the question is- whose photo do you have to show? Since we are displaying the bio in the single post, so we need to display the current user/author’s photo who wrote the post. To accomplish this, I am using another function to get his/her email from the current post. ‘get_the_author_meta‘ is another function that will give you a lot of information based on your inquiry. Since I need the author’s email, so I wrote ‘user_email’ as the parameter. That means, the following code gives me the current author’s email:

<?php get_the_author_meta('user_email') ?>

So the ‘get_avatar’ function will look like this:

<?php get_avatar( [email protected] ); ?>
<!-- 150 is the photo size -->
<!-- echo for outputting -->

Now you got the current user’s photo who wrote the post.

the_author_meta and get_the_author_meta are the similar functions. The first one directly outputs the result but the second one gets/finds the result but does not output it. It requires to ‘echo’ to output.

In the second step, I am displaying the author’s name by using the same function with a different parameter.

<?php the_author_meta('display_name'); ?>

If you want to display only the first name, then use ‘first_name’ as the parameter (instead of ‘display_name’). There are other parameters you can check the documentation.

In the third line, the same function (with different parameter ‘description’) displays information about the author (Biographical Info).

<?php echo get_the_author_meta('description'); ?>
<!-- OR -->
<?php echo get_author_posts_url( get_the_author_meta('ID') ); ?>

‘nl2br’ for keeping the line break. It returns the <br> tag. See the reference on

get_author_posts_url‘ is the last function that I used in this post. It returns the author’s archive URL based on provided ID (user ID).

And I am getting the user’s ID from the following code:

<?php get_the_author_meta('ID') ?>

After executing the above code, the ‘get_author_posts_url’ function will receive the author’s ID (user ID). And finally, the function will return the permalink of the author’s archive.