Я хочу изменить поиск, поэтому, если вы сказали, что у меня есть таксономия, называемая «автор», и добавьте термин «Ян Рэнкин» на пост, если я ищу «Яна Ранкина», я хочу, чтобы этот пост появился. Думаю, на данный момент он ищет только заголовки и контент. Как я могу сделать это также поисковыми терминами?
Вы можете изменить поисковый запрос, используя привязки фильтра, чтобы присоединиться к таблицам таксономии.
например, для поиска по таксономии автора
Сначала присоединитесь к таблицам таксономии
function tax_search_join( $join ) { global $wpdb; if( is_search() ) { $join .= " INNER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id INNER JOIN {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id INNER JOIN {$wpdb->terms} ON {$wpdb->terms}.term_id = {$wpdb->term_taxonomy}.term_id "; } return $join; } add_filter('posts_join', 'tax_search_join');
затем найдите поисковый запрос в таксономии «автор»,
function tax_search_where( $where ) { global $wpdb; if( is_search() ) { // add the search term to the query $where .= " OR ( {$wpdb->term_taxonomy}.taxonomy LIKE 'author' AND {$wpdb->terms}.name LIKE ('%".$wpdb->escape( get_query_var('s') )."%') ) "; } return $where; } add_filter('posts_where', 'tax_search_where');
и, наконец, группировать результаты по идентификатору сообщения, чтобы избежать дублирования результатов из-за объединения
function tax_search_groupby( $groupby ) { global $wpdb; if( is_search() ) { $groupby = "{$wpdb->posts}.ID"; } return $groupby; } add_filter('posts_groupby', 'tax_search_groupby');
Я действительно нашел плагин, который делает это. Это называется поиском всего . Я должен был внести поправку, хотя в соответствии с этим сообщением