certainlyakey
1/29/2015 - 6:02 AM

Wordpress - extend default search to custom fields

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);