The sql query for search is in /wp-includes/query.php
// If a search pattern is specified, load the posts that match
if ( !empty($q[‘s’]) ) {
// added slashes screw with quote grouping when done early, so done later
$q[‘s’] = stripslashes($q[‘s’]);
if ( !empty($q[‘sentence’]) ) {
$q[‘search_terms’] = array($q[‘s’]);
} else {
preg_match_all(‘/”.*?(“|$)|((?<=[\\s”,+])|^)[^\\s”,+]+/’, $q[‘s’], $matches);
$q[‘search_terms’] = array_map(‘_search_terms_tidy’, $matches[0]);
}
$n = !empty($q[‘exact’]) ? ” : ‘%’;
$searchand = ”;
foreach( (array) $q[‘search_terms’] as $term ) {
$term = esc_sql( like_escape( $term ) );
$search .= “{$searchand}(($wpdb->posts.post_title LIKE ‘{$n}{$term}{$n}’) OR ($wpdb->posts.post_content LIKE ‘{$n}{$term}{$n}’))”;
$searchand = ‘ AND ‘;
}
if ( !empty($search) ) {
$search = ” AND ({$search}) “;
if ( !is_user_logged_in() )
$search .= ” AND ($wpdb->posts.post_password = ”) “;
}
}
And in wp-content/themes/quote/inc/improved-search.php it’s the code that will search in topics and authors
<?php
// search all taxonomies, based on: https://projects.jesseheap.com/all-projects/wordpress-plugin-tag-search-in-wordpress-23
function taxonomies_search_groupby($groupby){
global $wpdb;
// we need to group on post ID
$groupby_id = “{$wpdb->posts}.ID”;
if(!is_search() || strpos($groupby, $groupby_id) !== false) return $groupby;
// groupby was empty, use ours
if(!strlen(trim($groupby))) return $groupby_id;
// wasn’t empty, append ours
return $groupby.”, “.$groupby_id;
}
function taxonomies_search_join($join){
global $wpdb;
if (is_search())
$join .= “LEFT JOIN {$wpdb->term_relationships} tr ON {$wpdb->posts}.ID = tr.object_id INNER JOIN {$wpdb->term_taxonomy} tt ON tt.term_taxonomy_id=tr.term_taxonomy_id INNER JOIN {$wpdb->terms} t ON t.term_id = tt.term_id”;
return $join;
}
function taxonomies_search_where($where){
global $wpdb;
if (is_search())
$where .= “OR (t.name LIKE ‘%”.str_replace(array(‘ quotes’,’ quote’),”,get_search_query()).”%’ AND {$wpdb->posts}.post_status = ‘publish’)”;
return $where;
}
add_filter(‘posts_where’,’taxonomies_search_where’);
add_filter(‘posts_join’, ‘taxonomies_search_join’);
add_filter(‘posts_groupby’, ‘taxonomies_search_groupby’);
?>