Intereting Posts
Создайте короткий код, который создает форму для редактирования пользователями своей информации Что произойдет, если я отключу свой виджет для визуального композитора? Я не могу правильно это сделать в WordPress Макросы для WordPress, создание субдоменов из регистраций для текущего домена Ресурс был предварительно загружен с использованием предварительной загрузки ссылок, но не использовался в течение нескольких секунд get_posts / WP_Query Объем памяти 134217728 байт исчерпан Получить атрибуты shortcode вне функции shortcode Раздельная бэкэнд-зона для членов против администратора? Пользовательские комментарии WP комментариев Запрос с вложенными комментариями возможен? (Иерархия / глубина) Функция для wrap_content в div Проблемы с загрузкой медиафайлов в модуле редактирования страниц? Исключить категорию из раскрывающегося списка Почему условные выражения не могут работать на странице? Как WordPress преобразует URL в $ query_string Создание и заполнение настраиваемого навигационного меню (позиция меню-позиция не работает)

Как использовать MySQL MATCH AGAINST в WP_Query?

Я пытаюсь выполнить поиск типа персонализированного сообщения, используя WP_Query как WP_Query ниже:

 $searchTerm = '%my book%'; $args = array( 'post_type' => 'books', 'meta_query' = array( 'relation' => 'OR', array( 'key' => 'book_title', 'value' => $searchTerm, 'compare' => 'LIKE' ), array( 'key' => 'book_description', 'value' => $searchTerm, 'compare' => 'LIKE' ) ); ); $query = new WP_Query($args); 

Вышеприведенный запрос работает отлично. На самом деле я могу изменить оператор compare для любого из поддерживаемых mysql операторов, таких как:

 =, \>=, <=, \>, <, LIKE, RLIKE, BETWEEN 

Однако я не могу понять, как использовать оператор MATCH AGAINST . В MySQL он работает следующим образом:

 select * from wp_postmeta where meta_key = 'book_title' and match(meta_value) against ('my book'); 

Но я не могу понять, как использовать его с WP_Query , заранее.

Насколько я знаю, вы не можете использовать MATCH()... AGAINST в WP_Query . Возможные значения для сравнения следующие:

 = != > >= < <= LIKE NOT LIKE IN NOT IN BETWEEN NOT BETWEEN NOT EXISTS REGEXP NOT REGEXP RLIKE 

Какое значение по умолчанию = . Однако вы можете использовать MATCH() AGAINST в общем запросе для использования $wpdb . Например:

 $wpdb->prepare(" AND MATCH($wpdb->posts.post_title, $wpdb->posts.post_content) AGAINST(%s)", $search ); 

Существуют также некоторые параметры __not_in вы можете использовать в своем запросе, например:

 $query = new WP_Query( array( 'tag__not_in' => array( 1, 2, 3 ) ) ); 

Что будет искать сообщения, у которых нет идентификаторов тегов 1, 2 и 3.

Этот билет Кодекса и основного билета может вам помочь.