query_vars['post_type'] ) ? $query->query_vars['post_type'] : ''; if ( is_array( $post_type ) ) { if ( ! in_array( 'docs', $post_type, true ) ) { return $search; } } elseif ( $post_type !== 'docs' ) { return $search; } $search_term = isset( $query->query_vars['s'] ) ? (string) $query->query_vars['s'] : ''; if ( $search_term === '' ) { return $search; } $taxonomies = [ 'doc_tag', 'doc_category' ]; $like = '%' . $wpdb->esc_like( $search_term ) . '%'; $placeholders = implode( ',', array_fill( 0, count( $taxonomies ), '%s' ) ); $args = $taxonomies; $args[] = $like; $subquery = $wpdb->prepare( "{$wpdb->posts}.ID IN ( SELECT DISTINCT tr.object_id FROM {$wpdb->term_relationships} tr INNER JOIN {$wpdb->term_taxonomy} tt ON tr.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN {$wpdb->terms} t ON tt.term_id = t.term_id WHERE tt.taxonomy IN ({$placeholders}) AND t.name LIKE %s )", $args ); return preg_replace( '/^\s*AND\s*\(/', " AND ({$subquery} OR ", $search, 1 ); } }