Co-Authors Plus

Assign multiple bylines to posts, pages, and custom post types via a search-as-you-type input box. Co-authored posts appear on a co-author’s archive page and in their feed. Co-authors may edit the posts they are associated with, and co-authors who are contributors may only edit posts if they have not been published (as is core behavior).

Add writers as bylines without creating WordPress user accounts. Simply create a guest author profile for the writer and assign the byline as you normally would.

On the frontend, use the Co-Authors Plus template tags to list co-authors anywhere you’d normally list the author.

This plugin is an almost complete rewrite of the Co-Authors plugin originally developed at Shepherd Interactive (2007). The original plugin was inspired by the ‘Multiple Authors’ plugin by Mark Jaquith (2005).


Latest version: Download Co-Authors Plus v3.1.1 [zip]


  1. IMPORTANT: Please disable the original Co-Authors plugin (if you are using it) before installing Co-Authors Plus
  2. Extract the file and upload its contents to the /wp-content/plugins/ directory. Alternately, you can install directly from the Plugin directory within your WordPress Install.
  3. Activate the plugin through the “Plugins” menu in WordPress.
  4. Place the appropriate co-authors template tags in your template.
  5. Add co-authors to your posts and pages.


Q. How do I add Co-Authors Plus support to my theme?
A. If you’ve just installed Co-Authors Plus, you might notice that the bylines are being added in the backend but aren’t appearing on the frontend. You’ll need to add the template tags to your theme before the bylines will appear.

Q. What happens to posts and pages when I delete a user assigned to a post or page as a coauthor?
A. When a user is deleted from WordPress, they will be removed from all posts for which they are co-authors. If you chose to reassign their posts to another user, that user will be set as the coauthor instead.

Q. Can I use Co-Authors Plus with WordPress multisite?
A. Yep! Co-Authors Plus can be activated on a site-by-site basis, or network-activated. If you create guest authors, however, those guest authors will exist on a site-by-site basis.

Q. Who needs permission to do what?
A. To assign co-authors to posts, a WordPress user will need the ‘edit_others_posts’ capability. This is typically granted to the Editor role, but can be altered with the ‘coauthors_plus_edit_authors’ filter.

To create new guest author profiles, a WordPress will need the ‘list_users’ capability. This is typically granted to the Administrator role, but can be altered with the ‘coauthors_guest_author_manage_cap’ filter.

Q. Can I easily create a list of all co-authors?
A. Yep! There’s a template tag called coauthors_wp_list_authors() that accepts many of the same arguments as wp_list_authors(). Look in template-tags.php for more details.


3.1.1 (Mar. 20, 2014)

  • Bug fix: Co-authors selection UI should appear when creating a new post too.

3.1 (Mar. 17, 2014)

  • Manage co-authors from Quick Edit. Props mpatek.
  • Updated Spanish translation, courtesy of sergiomajluf.
  • Now matches core behavior when displaying author archive on multisite: user of the blog, or previously published author on the blog.
  • Breaking change: “Create Profile” link is no longer shown by default on the Manage Users screen. Instead, it can be enabled with the coauthors_show_create_profile_user_link filter.
  • Guest authors work properly with Jetpack Open Graph tags. Props hibernation.
  • Guest author profile editor now supports a few different fields. Props alpha1.
  • New coauthors_count_published_post_types filter for specifying the post type(s) used when calculating the user’s number of published posts.
  • Bug fix: Ensure post_author is set to one of the co-authors assigned to a post.
  • Bug fix: Filter author feed link for guest authors on the author page. Props hibernation.
  • Packages a composer.json file for those using Composer.
  • Beginnings of unit test coverage for core features. Increased minimum required WordPress version to 3.7 because unit testing framework doesn’t work reliabilty below that.

3.0.7 (Jan. 27, 2014)

  • Better support for installing Co-Authors Plus as a symlinked directory. Follow these instructions to filter plugins_url.
  • Links to authors’ posts pages to comply to hCard microformat, which Google depends on.
  • New coauthors_emails() template tag to list email addresses of the co-authors. Props benlk.
  • Bug fix: Remove extraneous space between last two co-authors output. Props johnciacia.
  • Updated French translation, courtesy of Jojaba (via email).

3.0.6 (Dec. 9, 2013)

  • New Swedish translation, courtesy of alundstroem
  • Updated German translation, courtesy of krafit.
  • New Dutch translation, courtesy of kardotim
  • New filter for specifying the default author assigned to a post. Props tannerm
  • Bug fix: When filtering a user’s published post count, use the value of their guest author profile if one is mapped.
  • Added support for checkboxes in Guest Author profiles
  • Fix Strict warnings from CPT’s that don’t define all capabilities
  • New swap-coauthors CLI command for replacing one co-author with another

3.0.5 (Feb. 18, 2013)

  • New filter ‘coauthors_search_authors_get_terms_args’ allows you to increase the number of matches returned with AJAX co-author selection
  • Bug fix: If there isn’t an author term yet for a co-author, avoid an erronous join that caused duplicate posts to appear.

3.0.4 (Jan. 6, 2013)

  • Support for automatically adding co-authors to your feeds. Props cfg.
  • Bug fix: No Co-Authors Plus on attachments. For now.
  • Bug fix: Better support for co-authors with non-standard user_nicenames. Props STRML.

3.0.3 (Dec. 3, 2012)

  • Bug fix: The default order for the ‘author’ taxonomy should be ‘term_order’, in order for the author positions to stick. Props lgedeon

3.0.2 (Nov. 23, 2012)

  • Bug fix: Fall back to non-pretty permalinks when the author permastruct is empty, so that coauthors_posts_links() doesn’t link to the homepage

3.0.1 (Nov. 21, 2012)

  • Add your own custom columns to the guest authors table using filters. Props cfg
  • A new wp-cli subcommand for renaming co-authors and another for removing author terms mistakenly assigned to revisions
  • Bug fix: Using a featured image for a guest author avatar didn’t work. Now it does.
  • Bug fix: Don’t assign author terms to revisions to avoid unnecessary database bloat
  • Bug fix: Make the coauthors_wp_list_authors() template tag work again
  • Bug fix: Improve capability filtering by properly handling super admin access and situations where user_id = 0
  • Minor UI enhancements for guest authors

3.0 (Nov. 12, 2012)

  • Create guest author profiles for bylines you’d like to assign without creating WordPress user accounts. Guest authors can have all of the same fields as normal users including display name, biography, and avatars.
  • Support for non-Latin characters in usernames and guest author names
  • wp-cli subcommands for creating, assigning, and reassigning co-authors
  • For themes using core template tags like the_author() or the_author_posts_link(), you enable Co-Authors Plus support with a simple filter
  • New author terms are now prefixed with ‘cap-‘ to avoid collisions with global scope
  • Bug fix: Apply query filters to only post_types registered with the taxonomy. Props Tom Ransom
  • Filter coauthors_posts_link_single() with ‘coauthors_posts_link’. Also adds rel=”author”. Props Amit Sannad and Gabriel Koen
  • Filter for the context and priorities of the Co-Authors meta boxes. Props Tomáš Kapler
  • Renamed the post meta box for selecting authors so it applies to many post types. Props John Blackbourn

2.6.4 (May 7, 2012)

  • Bug fix: Properly filter the user query so users can AJAX search against the display name field again
  • If https is used for the admin, also use the secure Gravatar URL. Props rmcfrazier

2.6.3 (Apr. 30, 2012)

  • AJAX user search is back to searching against user login, display name, email address and user ID. The method introduced in v2.6.2 didn’t scale well
  • French translation courtesy of Sylvain Bérubé
  • Spanish translation courtesy of Alejandro Arcos
  • Bug fix: Resolved incorrect caps check against user editing an already published post. See forum thread

2.6.2 (Mar. 6, 2012)

  • AJAX user search matches against first name, last name, and nickname fields too, in addition to display name, user login, and email address
  • Comment moderation and approved notifications are properly sent to all co-authors with the correct caps
  • Filter required capability for user to be returned in an AJAX search with ‘coauthors_edit_author_cap’
  • Filter out administrators and other non-authors from AJAX search with ‘coauthors_edit_ignored_authors’
  • Automatically adds co-authors to Edit Flow’s story budget and calendar views
  • Bug fix: Don’t set post_author value to current user when quick editing a post. This doesn’t appear in the UI anywhere, but adds the post to the current user’s list of posts
  • Bug fix: Properly cc other co-authors on new comment email notifications
  • Bug fix: If a user has already been added as an author to a post, don’t show them in the AJAX search again
  • Bug fix: Allow output constants to be defined in a theme’s functions.php file and include filters you can use instead

2.6.1 (Dec. 30, 2011)

2.6 (Dec. 22, 2011)

  • Sortable authors: Drag and drop the order of the authors as you’d like them to appear (props kingkool68)
  • Search for authors by display name (instead of nicename which was essentially the same as user_login)
  • Option to remove the first author when there are two or more so it’s less confusing
  • Bumped requirements to WordPress 3.1
  • Bug fix: Update the published post count for each user more reliably

2.5.3 (Aug. 14, 2011)

  • Bug fix: Removed extra comma when only two authors were listed. If you used the COAUTHORS_DEFAULT_BETWEEN_LAST constant, double-check what you have

2.5.2 (Apr. 23, 2011)

  • Bug: Couldn’t query terms and authors at the same time (props nbaxley)
  • Bug: Authors with empty fields (e.g. first name) were displaying blank in some cases
  • Bug: authors with spaces in usernames not getting saved (props MLmsw, Ruben S. and others!)
  • Bug: revisions getting wrong user attached (props cliquenoir!)

2.5.1 (Mar. 26, 2011)

  • Fix with author post count (throwing errors)

2.5 (Mar. 26, 2011)

  • Custom Post Type Support
  • Compatibility with WP 3.0 and 3.1
  • Gravatars
  • Lots and lots and lots of bug fixes
  • Thanks to everyone who submitted bugs, fixes, and suggestions! And for your patience!

2.1.1 (Oct. 16, 2009)

  • Fix for coauthors not being added if their username is different from display name
  • Fixes to readme.txt (fixes for textual and punctuation errors, language clarification, minor formatting changes) courtesy of Waldo Jaquith

2.1 (Oct. 11, 2009)

  • Fixed issues related to localization. Thanks to Jan Zombik for the fixes.
  • Added set_time_limit to update function to get around timeout issues when upgrading plugin

2.0 (Oct. 11, 2009)

  • Plugin mostly rewritten to make use of taxonomy instead of post_meta
  • Can now see all authors of a post under the author column from Edit Posts page
  • All authors of a post are now notified on a new comment
  • Various javascript enhancements
  • New option to allow subscribers to be added as authors
  • All Authors can edit they posts of which they are coauthors
  • FIX: Issues with wp_coauthors_list function
  • FIX: Issues with coauthored posts not showing up on author archives

1.2.0 (Jun. 16, 2012)

  • FIX: Added compatibility for WordPress 2.8
  • FIX: Added new template tags (get_the_coauthor_meta & the_coauthor_meta) to fix issues related to displaying author info on author archive pages. See Other Notes for details.
  • FIX: Plugin should now work for plugins not using the ‘wp_’ DB prefix
  • FIX: Coauthors should no longer be alphabetically reordered when the post is updated
  • FIX: Plugin now used WordPress native AJAX calls to tighten security
  • DOCS: Added details about the new template tags

1.1.5 (Apr. 26, 2009)

  • FIX: Not searching Updated SQL query for autosuggest to search through first name, last name, and nickname
  • FIX: When editing an author, and clicking on a suggested author, the original author was not be removed
  • DOCS: Added code comments to javascript; more still to be added
  • DOCS: Updated readme information

1.1.4 (Apr. 25, 2009)

  • Disabled “New Author” output in suggest box, for now
  • Hopefully fixed SVN issue (if you’re having trouble with the plugin, please delete the plugin and reinstall)

1.1.3 (Apr. 23, 2009)

  • Add blur event to disable input box
  • Limit only one edit at a time.
  • Checked basic cross-browser compatibility (Firefox 3 OS X, Safari 3 OS X, IE7 Vista).
  • Add suggest javascript plugin to Edit Page.

1.1.2 (Apr. 19, 2009)

  • Disabled form submit when enter pressed.

1.1.1 (Apr. 15, 2009)

  • Changed SQL query to return only contributor-level and above users.

1.1.0 (Apr. 14, 2009)

  • Initial beta release.

48 thoughts on “Co-Authors Plus

    • I’m having the same problem. When I click on one of the co-author links it goes to the author page of the first co-author of the post. Is there any way to address this?

  1. Hi Mohammad,

    This is a great plugin. Really great, especially the explainations of how to use the template tags – made it easy even for a coding novice like me!

    I have one question that I hope you will be able to help me with. It is with a bit of a strange extension to your plugin, but one that could be really very useful. I am using the co-authors status to allow a user to upload a photo to a comment. What I would now like to do is, on the homepage, call a particular post and then show the most recent comment that was made by a coauthor. If you are able to help me I would be really grateful.

    Many thanks!


  2. Hi,
    I am using the co-authors plugin V1.2.0 on our internal blog. I tried to update to 2.1.1 but the author search-as-you-type box on the editor reverts to the drop down list and I don’t see any co-authors at all..
    We are using WordPress 2.9.2 and Version 1.2.0 of the plugin works.
    Any idea what I’m doing wrong?

    • I’m seeing the same thing here.
      It used to work great; indeed, we have assigned multiple co-authors to many pages and posts using co-author plus.
      However, somewhere along the line things got broken.
      Some pages (even those that have multiple authors assigned!) don’t display pliug-ins select fields at all, but revert back to the single author drop-down selection. On other pages it seems to work as it used to.

      Could WP 2.9.2 be the culprit?

    • Thanks Nathaniel for the question and solution :)

      You bring up an important issue, and I’ll see if I can add in that capability for authors (i.e. add authors post but not be able to edit other’s posts).

      • Great plugin! I would also like my authors to be able to add co-authors to their posts without being able to edit others posts. Will this be soon possible?

  3. I would like to be able to notify the co authors is a comment has been left. I am using the plugin NotifyonComments which will send a mail to the primary author, but this doesn’t pick up the co-authors.

    here is the code that retrieves the authors email, but how can I change this to capture all of the co-authors?

    $user = get_userdata($post->post_author);
    $to = $user->user_email;

    I’d be really grateful for your help.

    Many thanks

  4. There is a bug in the custom function coauthors_wp_list_authors: it does not include authors in the list who don’t have a post of their own – if they have only entries in which they are listed as co-author but not as author, they will not be included in the list.

    I’ve looked at the faulty SQL statement, but unfortunately my knowledge of advanced SQL, especially when it comes to JOINs, as well as my knowledge of the wp database structure is too limited and I remain clueless.

    There is a topic in the WP support forum (, but unfortunately the information there is very outdated and the fix is not applicable anymore. I couldn’t find any other, more current solutions on the internet. I’d be glad if you could fix the bug so it also lists co-authors who don’t have posts where they’re the sole author, as well as display the correct post count for all authors. Judging from the forum, I’m not the only one who is vexed by this bug (I think the comment by Luca Rosati is referring to the same bug).

    • Hey guys,

      got a problem that is similar to yours: one author isn’t displayed, but he is the original author of some posts. All the other authors are displayed correctly. So I wonder why this is happening (no offense, Mo. Great plugin!). If I use “hide_empty=0” he is listed – with no posts.
      There must still be a bug in that coauthors_wp_list_authors-function besides the “no original posts”-bug.
      Any ideas, Mo?

  5. I am using the latest issue of wordpress (2.9.2). When I try to install co-authors plus I get the gollowing error message:

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /homepages/9/d133509243/htdocs/brierleyhill/wp-content/plugins/co-authors-plus/co-authors.php on line 422

    Have you any ideas on how to get it to work?

  6. Mohammad, I’m on wp 2.9.2 with co-a+ 2.1.1 and can’t get ‘the_coauthor_meta( $field )’ to work. I’m trying to show both authors’ bios, etc…

    I’m using … php the_coauthor_meta(‘description’); ? … but nothing is output or echo’d.

    Any ideas why? Can anyone confirm that the_coauthor_meta( $field ) function works for them?


  7. Thanks so much for this essential plugin!

    I’m having problems with my author archives. My co-authored posts link to each author archive, for example:

    John’s archive is fine, but Henry’s archive has John’s name and bio. Henry’s posts are displayed correctly, it’s just the name and bio that are from the wrong author.

    How do I use the CoAuthorsIterator class to display only Henry’s name and bio on his author archive? TIA!

  8. Hi, I have problem with displaying my archive.php page for authors. I’ve replaced




    but archive pages still doesn’t work – it just display info: “Sorry, but there aren’t any posts by name-of-author yet.”, tough I’ve a couple of posts by every author.

    I’m not big php or wordpress magic, so sorry if I ask about something obvious :) But I googled it for a couple of hours and couldn’t get the answer.

    I’m running wordpress 3.0 installation with Magazine Basic theme.

  9. Hello,

    I have been working with your plug in but I am having problems when I add a co-author to a page. The plug in only works with post.

    Please let me know how to resolve this issue.


  10. Thanks for your very fast response, Mohammad! I only had time to get back and test the fix you provided (on June 22) now. Unfortunately, it didn’t work. The same problem persisted, where Author #2’s page displayed the incorrect bio and photo. I have a hack in place that works, but requires manual changes whenever a new author is added. It sounds like you’ve been doing more development on the plugin, so I’ll just sit tight and await the next release to see if the problem resolves. Thanks again! I really needed CoAuthor Plus functionality and you provided it—kind of amazing it’s not a core WP function.

  11. Hi,
    Thank you for taking the time to develop this awesome plugin. It is really filling a gap in wordpress. I use it on my website to publish scientific content, as it is often the case that several people contribute to a single article. One major problem I have, in that context, is that the order of the authors is important. For instance, the main author has the most responsibility in writing the paper… It seems that the plugin does not preserve the order of the authors as entered originally. When re-edited by another other, the order is changed.
    I was wondering if there is a simple hack to fix that.
    Best regards,

  12. Hi,

    I have just installed your plugin and think it is great!

    I just have a couple of questions….

    What I actually need to a plugin that lets multiple contributors (not authors) edit posts, before they and reviewed and finally published by my editor. Co-Authors Plus plugin seemed to turn all my contributors in to authors. Is the clue in it’s name and it’s not designed to do quite what I want!? Or is this a bug?

    Also, up the top of this page where you say “Place the appropriate coauthors template tags in your template.” (under Installation), I am a bit unclear what this actually means? Sorry if this is an incredibly stupid question; I’m pretty new to wordpress!


  13. I must say, great plugin!
    I’m currently using for a website I built for a local radio station to have all the hosts manage their own programs. However, the problem is that because of the custom post type it’s not working correctly.

    Noticed this on line 438: @TODO: Fix this disgusting hardcodedness. Ew.
    I can see this is likely where the problem lies. Any plans on fixing this in a new release? Otherwise, I will work on this myself as I have made quite a few changes to it for my own purposes already. Thanks.

    (custom taxonomy at the beginning should get the argument ‘show_ui’ => false) ;)

  14. Here’s a co-authored post:
    Click either author, and it says “no posts by this author.”
    In fact, ALL authors on my blog now have “no posts by this author.”
    I deactivated the plugin, and the problem went away. I would like to keep using this plugin! but I need a repair for the authors’ profiles pages to display posts by those authors.

    I read that the plugin does support “posts by” in author profiles, but it’s not working for me. Perhaps that support didn’t get integrated because I had made a change to author.php before installing this plugin? Is the necessary author.php code posted somewhere on the web where I can copy it and integrate it manually? I tried to figure out the “template tags” in README and posted above, but they don’t seem to relate to author.php.

    This is my author.php file:


    echo "\n”;
    echo get_avatar( $curauth->user_email );
    echo “\n”;

    echo “\n”.$curauth->display_name.””;
    echo “Registered “.$curauth->user_registered.””;

    echo “\n”;

    if($curauth->nickname!=””) :
    echo “\n”;
    echo “Nickname”;
    echo “”.$curauth->nickname.””;
    echo “”;
    if($curauth->description!=””) :
    echo “\n”;
    echo “About”;
    echo “”.$curauth->description.””;
    echo “”;
    if($curauth->affiliation!=””) :
    echo “\n”;
    echo “Affiliation”;
    echo “”.$curauth->affiliation.””;
    echo “”;
    if($curauth->user_url!=””) :
    echo “\n”;
    echo “Website”;
    echo “”;
    echo “user_url.”‘>”.$curauth->user_url.”“;
    echo “”;
    if($curauth->user_email!=””) :
    echo “\n”;
    echo ” Email”;
    echo “”;
    echo “user_email.”‘>”.$curauth->user_email.”“;
    echo “”;
    if($curauth->jabber!=””) :
    echo “\n”;
    echo ” GoogleTalk/Jabber”;
    echo “”.$curauth->jabber.””;
    echo “”;
    if($curauth->yim!=””) :
    echo “\n”;
    echo ” Yahoo! Messenger”;
    echo “”.$curauth->yim.””;
    echo “”;
    if($curauth->aim!=””) :
    echo “\n”;
    echo ” AOL Instant Messenger”;
    echo “”.$curauth->aim.””;
    echo “”;
    echo “\n”;

    Posts by nickname; ?>:

    <a href="” rel=”bookmark” title=”Permanent Link: “>

  15. Hi Mohammed,

    I cannot get plugin to activate, installs okay but keep getting ‘page not found’ when try to activate. WordPress 3.0.2, any ideas?

    Thanks for continuing this plugin, hopefully well into the future!


  16. Hello and thank you for your work.
    In order to help improvement, I want to let you know that I had to addslashes the “$author->display_name” found in the code to make it work correctly by my side.


  17. Thanks for the great plugin. I’m wondering if there is a way to append coauthors_lastnames onto coauthors_firstnames. I would simply use coauthors_posts_links, but I can’t use the standard display name since I need to reorder my authors by alpha (last name).

    Thanks again for any advice.

  18. Hey Mo
    great to see, you’ve updated the plugin! Gret news! After the update, I receive an error called:

    Warning: Missing argument 2 for coauthors_plus::filter_count_user_posts() in DOMAIN/Wordpress/wp-content/plugins/co-authors-plus/co-authors-plus.php on line 491

    Before the update everything was fine. It looks like the plugin collides with the the_author_posts or count_user_posts-tag.

    Any ideas?

  19. Use your plugin and that last update really worked me over. Ive got one guy that I cant even select as he doesnt come up .. the only thing I notice that is different is his username is two words ‘lunch meat’ vs the others as a single word.

    I really need this addressed asap as a little quirky is ok, not being able to list an author is a major problem.

    I see that in the change log there is a 3.0 posted yet 2.5.1 is the latest available. Can I get an ETA on when the fixes are going to be available?

  20. Hi,

    I got the same problem like Jarou postet above. The Plugin works fine but the archive isn’t showing anything. I can use coauthors_posts_links() or the original hook the_author_posts_link(), it doesn’t work…

  21. Why there’s restriction of only Editor and Administrator can assign co-authors? Is there anyway I can work around this, instead of promote all my user to Editors?

    • Add this to your theme’s functions.php or a plugin:

      add_filter( 'coauthors_plus_edit_authors', 'my_allow_authors_to_add_authors' );

      function my_allow_authors_to_add_authors() {
      return current_user_can( 'publish_post' );

      Note: this doesn’t properly account for custom post types. You’ll need to write a bit more code to factor that in.

  22. The plugin works great for assigning co-authors on posts… BUT, even though I can assign co-author on PAGES they are unable to edit them (Only the original author can edit the page). Granting them the capability to “edit others pages” negates the need for this plugin. Just wondering if there is a workaround for this! Thanks

  23. Thanks for a superb plugin, I was wondering whether there was a way to change the default author of a post?

    The permalink I’d like to use includes the author,

    If it was Matt who initially wrote the post, and then added Will and Greg as Co Authors the permalink would be

    but I’d like to be able to change that, is it possible?

    • I did find a bit of a hack solution, I commented out line 112 of the plugin:

      //add_action( ‘load-edit.php’, array( $this, ‘remove_quick_edit_authors_box’ ) );

      This way I can use the quick edit to change the author that wordpress reads.

      I set up a ghost account named ‘group’ and manually set that as the default author for all co-authored posts. What would be best is if there was an option within the plugin to set a default author for any post with a co-author.

      • And now I’ve realised you can edit the co-author just by clicking on it…

        Occam’s razor..

        Feel free to delete this tree of comments

  24. I have installed this plugin. But, co-authors name is not visible in the blogpost, however its visible in the dashboard. How can I make all co-authors name visible on blogpost?

  25. Pingback: Building an Online Newspaper with WordPress |

Leave a Reply