Intereting Posts
Запрос нескольких значений из одного ключа добавление полного пути к файлу javascript wordpress Как сделать admin CRUD & Pagination У меня есть форма с пользовательской кнопкой, я хочу добавить данные поля в базу данных при нажатии на пользовательскую кнопку Как заставить пользователей к определенному субдомену регистрироваться для MU (Multisite)? Shortcode не обрабатывается при добавлении в поле параметра с помощью wp_editor Объедините tax_query и meta_query в WP_Query Настройка wp_link_pages Получить категории с сообщениями по настраиваемому значению поля Как оптимизировать сайт WP для миллионов сообщений Как настроить «Имя» настраиваемого поля в раскрывающемся списке по умолчанию в теме? Поиск шаблона за страницей WordPress Изменение тела почты, отправленного на новую регистрацию пользователя Язык перевода не работает? Список дочерних настраиваемых типов сообщений перечисляет все пользовательские типы сообщений

WP_Query поиск целых слов

Я ищу условия, связанные с наукой. Вот что мне нужно для моего запроса. Если кто-то ищет «био», они не должны получать результаты для терминов «биология», но они должны «для биологии». Мне нужен запрос для возврата результатов для всего слова. Любые предложения приветствуются. Благодаря!

Вот мой код:

$queryArgs = array( 'post_type' => 'faculty', 'posts_per_page' => -1, 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'proposed_keywords', // name of custom field 'value' => $keyword, // matches exaclty "123", not just 123. This prevents a match for "1234" 'compare' => 'LIKE' ) ) ); 

Для этого вам понадобятся регулярные выражения.

Прежде всего, вам нужно изменить 'LIKE' на 'RLIKE' (или 'REGEXP' ).

Во-вторых, замените $keyword в 'value' на регулярное выражение, которое включает границы слов.

Вот так:

  $queryArgs = array( 'post_type' => 'faculty', 'posts_per_page' => -1, 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'proposed_keywords', // name of custom field 'value' => "[[:<:]]$keyword[[:>:]]", // matches exaclty "123", not just 123. This prevents a match for "1234" 'compare' => 'RLIKE' ) ) ); 

Вышеуказанные 500 на мне (wp-engine), поэтому вместо этого я использовал:

 'value' => '[[:<:]]'.$keyword.'[[:>:]]', 'compare' => 'REGEXP' 

Что отлично работает 🙂