Intereting Posts
Обратная инженерия или автоматическое поколение сущностей в Laravel? управление выводом curl в php WordPress: показывать только будущие сообщения минус один день zf2 генерирующий объект с доктриной ORM Переход от базы данных к сеансам PHP – Соответствующие термины поиска mysql_query Исключение исключения PHPUnit Как получить идентификатор строки, которую я только что вставил php / mysql Sqlite3, SQLSTATE : общая ошибка: база данных 5 заблокирована Как получить массив неизвестных значений $ _GET в URL? Я делаю это неправильно, или есть ошибка в библиотеке проверки формы CodeIgniter при использовании массивов в качестве имен полей? восклицательный знак появляется в теле сообщения электронной почты, используя phpmailer Сохранение статей и связанных с ними категорий в соответствии с нормализацией Twitter REST API: возможно ли использовать Hotlink Twitter Images? Почему нет изображения в Firefox? Доступ к статическому объекту с помощью имени переменной

Как изменить поиск в WordPress, чтобы он запрашивал термины таксономии и термины категории?

Я хочу изменить поиск, поэтому, если вы сказали, что у меня есть таксономия, называемая «автор», и добавьте термин «Ян Рэнкин» на пост, если я ищу «Яна Ранкина», я хочу, чтобы этот пост появился. Думаю, на данный момент он ищет только заголовки и контент. Как я могу сделать это также поисковыми терминами?

Вы можете изменить поисковый запрос, используя привязки фильтра, чтобы присоединиться к таблицам таксономии.

например, для поиска по таксономии автора

Сначала присоединитесь к таблицам таксономии

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'); 

Я действительно нашел плагин, который делает это. Это называется поиском всего . Я должен был внести поправку, хотя в соответствии с этим сообщением