/** * Search by product SKU */ function wpninja_product_search_sku( $join, $query ) { if ( ! $query->is_main_query() || is_admin() || ! is_search() || ! is_woocommerce() ) { return $join; } global $wpdb; $join .= " LEFT JOIN {$wpdb->postmeta} wpninja_post_meta ON {$wpdb->posts}.ID = wpninja_post_meta.post_id "; return $join; } add_filter( 'posts_join', 'wpninja_product_search_sku', 10, 2 ); /** * Modify the search query with posts_where. */ function wpninja_product_search_where( $where, $query ) { if ( ! $query->is_main_query() || is_admin() || ! is_search() || ! is_woocommerce() ) { return $where; } global $wpdb; $where = preg_replace( "/\(\s*{$wpdb->posts}.post_title\s+LIKE\s*(\'[^\']+\')\s*\)/", "({$wpdb->posts}.post_title LIKE $1) OR (wpninja_post_meta.meta_key = '_sku' AND wpninja_post_meta.meta_value LIKE $1)", $where ); return $where; } add_filter( 'posts_where', 'wpninja_product_search_where', 10, 2 );