<?php /** * Add post meta to search query in where part * * @param string $where Where query part * * @return string */ function modify_wp_search_where( $where ) { if ( is_search() ) { global $wpdb, $wp; $where = preg_replace( "/($wpdb->posts.post_title LIKE '{$wpdb->placeholder_escape()}{$wp->query_vars['s']}{$wpdb->placeholder_escape()}'\))/i", "$0 OR ($wpdb->postmeta.meta_value LIKE '%{$wp->query_vars['s']}%')", $where ); add_filter( 'posts_join_request', 'modify_wp_search_join' ); add_filter( 'posts_distinct_request', function() { return 'DISTINCT'; } ); } return $where; } add_action( 'posts_where_request', 'modify_wp_search_where' ); /** * Join post meta to search query * * @param string $join Join query part * * @return string */ function modify_wp_search_join( $join ) { global $wpdb; return $join .= " LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) "; }