For anyone else that stumbles upon this, @admcfajn posted a comment to my question which solved my problem. Below is the code block found in the commented link, attributed to “danielbachhuber” github user:
/**
* Include posts from authors in the search results where
* either their display name or user login matches the query string
*
*/
function db_filter_authors_search( $posts_search ) {
// Don't modify the query at all if we're not on the search template or if the LIKE is empty
if ( !is_search() || empty( $posts_search ) ) return $posts_search;
global $wpdb;
// Get all of the users of the blog and see if the search query matches either the display name or the user login
add_filter( 'pre_user_query', 'db_filter_user_query' );
$search = sanitize_text_field( get_query_var( 's' ) );
$args = array(
'count_total' => false,
'search' => sprintf( '*%s*', $search ),
'search_fields' => array(
'display_name',
'user_login',
),
'fields' => 'ID',
);
$matching_users = get_users( $args );
remove_filter( 'pre_user_query', 'db_filter_user_query' );
// Don't modify the query if there aren't any matching users
if ( empty( $matching_users ) ) return $posts_search;
// Take a slightly different approach than core where we want all of the posts from these authors
$posts_search = str_replace( ')))', ")) OR ( {$wpdb->posts}.post_author IN (" . implode( ',', array_map( 'absint', $matching_users ) ) . ")))", $posts_search );
return $posts_search;
}
add_filter( 'posts_search', 'db_filter_authors_search' );
/**
* Modify get_users() to search display_name instead of user_nicename. Helper function used inside of db_filter_authors_search()
*/
function db_filter_user_query( &$user_query ) {
if ( is_object( $user_query ) )
$user_query->query_where = str_replace( "user_nicename LIKE", "display_name LIKE", $user_query->query_where );
return $user_query;
}
** minor adjustments have been made by me, in the form of spacing and consolidating lines, to make the code more legible.