You could do this with a simple script.
IMPORTANT! – Backup your database before doing this & attempt at your own risk.
Create a file called changeauthorcat.php in your main WordPress folder.
<?php
include( 'wp-config.php' );
global $wpdb;
// Author username
$username="exampleuser";
// New category slug
$newCatSlug = 'examplecategory';
// find the right author
$author = get_user_by( 'login', $username );
// find the right category
$category = get_category_by_slug( $newCatSlug );
if ( $author && $category ) {
$posts = get_posts( array(
'numberposts' => -1,
'author' => $author->ID
)
);
if ( $posts ) {
foreach ( $posts as $post ) {
// update all categories
// the last parameter of false will replace all existing categories
// see https://codex.wordpress.org/Function_Reference/wp_set_post_categories
wp_set_post_categories( $post->ID, array( $category->term_id ), false );
}
}
}
?>
Change “exampleuser” to the login of the author you want to change. Change “examplecategory” to the slug of the new category.
Navigate to http://yourdomain.com/changeauthorcat.php.
Delete the file when you’re done.
Note that this will remove every other category from these posts and only place them in the new category. Using the wp_set_post_categories function will update the database with the correct category counts as well. Read more at: https://codex.wordpress.org/Function_Reference/wp_set_post_categories