Wordpress - extend default search to custom fields
//Extend search to custom fields
function extend_search( $search ) {
global $wpdb;
global $wp_query;
if ( empty( $search )) {
return $search;
}
$terms = $wp_query->query_vars[ 's' ];
$exploded = explode( ' ', $terms );
if( $exploded === FALSE || count( $exploded ) == 0 )
$exploded = array( 0 => $terms );
$search = '';
foreach( $exploded as $tag ) {
$search .= " AND (
($wpdb->posts.post_title LIKE '%$tag%')
OR ($wpdb->posts.post_excerpt LIKE '%$tag%')
OR ($wpdb->posts.post_content LIKE '%$tag%')
OR EXISTS
(
SELECT * FROM $wpdb->postmeta
WHERE post_ID = $wpdb->posts.ID
AND meta_value LIKE '%$tag%'
)
)";
}
return $search;
}
add_filter('posts_search','extend_search',10,1);