Поиск по произвольным полям WordPress без плагина

Click here to view original web page at www.kobzarev.com
Обложка к записи Поиск по произвольным полям WordPress без плагина

Пользовательские произвольные поля — это одна из самых мощных функций, доступных в WordPress.

Они особенно полезны при расширении WordPress за счет использования пользовательских типов записей. Я постоянно создаю пользовательские типы записей для таких вещей, как товары, портфолио или галереи при разработке тем WordPress для клиентов.

Эти поля очень удобны, когда нужно добавить детали товара, такие как артикулы или цены. К сожалению, поиск в WordPress по произвольным полям невозможен из коробки. Чтобы исправить это, необходимо изменить поисковый запрос WordPress, чтобы он включал пользовательские поля.

Делаем Left Join

Таблица postmeta — это место, где в базе данных хранятся вся информация о произвольных полях. По умолчанию функция поиска WordPress настроена на поиск только в таблице posts.

Чтобы включить данные пользовательских полей в наш поиск, нам сначала нужно выполнить левое объединение таблиц posts и postmeta в базе данных.

Модифицируем Query

Далее нам нужно изменить поисковый запрос WordPress, чтобы включить в него произвольные поля.

Исключаем дубликаты

Наконец, нам нужно добавить ключевое слово DISTINCT в SQL-запрос, чтобы предотвратить появление дубликатов.

Заключение

Добавьте следующий код в файл functions.php, чтобы начать поиск WordPress по произвольным полям. Этот код не только изменит поиск во внешнем интерфейсе, но вы также сможете искать по пользовательским полям на всех экранах редактирования в админке.