Skip to content

WordPress: Get user object for author of current post

I just wanted to get the user object for the author of the current post inside the loop, to my surprise this doesn’t seem to be provided as a built in function.

  • the_author() and get_the_author() return (bizarrely) the public display name of the author
  • the_author_meta($field) requires you to specify a field key and returns a single value
  • get_currentuserinfo() returns the current logged in user

The we have the get user functions:

  • get_userdata($id) requires you to pass in the user ID
  • get_user_by($k, $v) lets you find a user by id, slug, email or login.

But we only have the display name for the author!?  Thankfully all is not lost.

  if (have_posts()) : while (have_posts()) : the_post();
    $author = get_userdata($post->post_author);
  endwhile; endif;

The magically global $post variable has an attribute post_author which returns the ID of the author.  We can then use get_userdata($id) to retrieve the author object.

Quite why this isn’t a core WordPress function I don’t know, we’ll be submitting it as a suggestion in the near future!