There are occasions when you need to do something programmatically, i.e., through a little function, rather then by clicking on a button in WordPress. Such was the case when I needed to re-assign an author to massive amount of posts. There were just too many posts to do it manually from the backend of WordPress, so I had to accomplish this through a little piece of code.
Assigning an author
To assign a single author to a post or a list of posts running them through a loop, the core code would look like this.
// Prepare data $p = array( 'ID' => $post_id, 'post_author' => $auth_id ); // Save data wp_update_post( $p );
This code will update the author with the given $auth_id
value, which is the desired user ID in WordPress.
Assigning co-authors
After the first tests with the above script, I discovered that it was not of much help because we were using the Co-Authors Plus plugin, which did not update its data when post authors was updated programmatically. So, I had to figure out how to accomplish this for co-authors instead.
After doing some digging on the plugin codebase, I discovered that they expose an object
as global by the name of $coauthors_plus
which we can call from our function. The core code will look like this:
// Prepare data $coauthors = array($auth_username); // Save data $coauthors_plus->add_coauthors($post_id, $coauthors);
Running add_coauthors()
method takes care of all the necessary steps to assign the co-authors. We can pass one or more co-authors at the same time as an array, but this time we don’t pass the user IDs, but their usernames instead. This is how this plugin saves the co-authors data.
These are the ways to programmatically assign authors and co-authors in WordPress. Please let me know in the comments if you found this helpful or need further explanation on this subject. Keep learning!