/** * "fuzzy search" to help with searching for profiles * @param string $search query based on search term * @param string $wp_query query based on entire page (including $search) * @return string sql query for page */ function wpse66815_search_query_string( $search, &$wp_query ) { if (!is_admin() && is_search()) { //print_r($search); global $wp_query,$wpdb; // get search term $search_term = array_shift($wp_query->query_vars['search_terms']); // specify string we'll use to replace $replace_var = 'TL'; // find matches for that string preg_match_all("/{$replace_var}(?:[^0-9]*)(\d+)/i", $search_term, $out); // if there's no matches, return the normal search if ( empty($out[0]) ) return $search; //var_dump($out); // find/generate the search term with the replacement $modified_search_term = preg_replace( "/{$replace_var}(?:[^0-9]*)(\d+)/i" ,"{$replace_var}-$1" ,$search_term ); // combine both the regular and modified search term $new_search[] = $search_term; $new_search[] = $modified_search_term; print_r($new_search[0]); // generate the new search query $new_string_parts[] = $wpdb->prepare( " AND ((({$wpdb->posts}.post_title LIKE '%%%s%%') OR ({$wpdb->posts}.post_content LIKE '%%%s%%')) " ,like_escape( $new_search[0] ) ,like_escape( $new_search[0] ) ); $new_string_parts[] = $wpdb->prepare( " OR (({$wpdb->posts}.post_title LIKE '%%%s%%') OR ({$wpdb->posts}.post_content LIKE '%%%s%%'))) " ,like_escape( $new_search[1] ) ,like_escape( $new_search[1] ) ); /*foreach ( $new_search as $keyword) { if ($keyword === reset($new_search)) { $new_string_parts[] = $wpdb->prepare( " AND ((({$wpdb->posts}.post_title LIKE '%%%s%%') OR ({$wpdb->posts}.post_content LIKE '%%%s%%')) " ,like_escape( $keyword ) ,like_escape( $keyword ) ); } elseif ($keyword === end($new_search)) { $new_string_parts[] = $wpdb->prepare( " OR (({$wpdb->posts}.post_title LIKE '%%%s%%') OR ({$wpdb->posts}.post_content LIKE '%%%s%%'))) " ,like_escape( $keyword ) ,like_escape( $keyword ) ); } else { $new_string_parts[] = $wpdb->prepare( " OR (({$wpdb->posts}.post_title LIKE '%%%s%%') OR ({$wpdb->posts}.post_content LIKE '%%%s%%')) " ,like_escape( $keyword ) ,like_escape( $keyword ) ); } }*/ // set $search equal to results $search = implode( " ", $new_string_parts ); //print_r($search); } return $search; } add_filter('posts_search', 'wpse66815_search_query_string',500,2);