Хук posts_where в WPFTS
Фильтр posts_where в WordPress позволяет модифицировать часть SQL-запроса WHERE, используемую для выборки постов. WPFTS использует этот хук для добавления условий, связанных с типами MIME, при поиске по вложениям.
Что делает WPFTS при вызове posts_where:
-
Проверка использования индексного поиска: Плагин проверяет, включен ли индексный поиск WPFTS ($wpq->wpftsi_session[‘use_indexed_search’]).
-
Добавление условий для MIME-типов: Если индексный поиск включен, WPFTS анализирует параметр запроса wpfts_temp_mimes, который содержит список MIME-типов, по которым необходимо выполнить поиск. Плагин добавляет в часть WHERE запроса условие, которое ограничивает выборку постов с указанными MIME-типами. Это позволяет выполнять поиск только по определенным типам файлов (например, PDF, DOCX).
Важные функции, задействованные в обработке posts_where:
-
WPFTS_Search::index_sql_where()
-
WPFTS_Search::wpfts_wp_post_mime_type_where() (вспомогательная функция для генерации условия WHERE для MIME-типов)
Как это использовать в разработке аддонов:
Разработчикам аддонов следует учитывать, что WPFTS модифицирует часть WHERE запроса для обработки MIME-типов. Если ваш аддон также добавляет условия в WHERE, убедитесь, что ваша логика не конфликтует с WPFTS.
Дополнительные замечания:
-
WPFTS добавляет условия для MIME-типов, только если используется индексный поиск.
-
Параметр wpfts_temp_mimes используется для временного хранения MIME-типов, поскольку стандартный параметр post_mime_type очищается плагином в методе WPFTS_Search::index_pre_get_posts().
-
Функция wpfts_wp_post_mime_type_where используется для генерации корректного условия WHERE для MIME-типов, учитывая подстановочные символы.
Этот хук демонстрирует, как WPFTS обрабатывает поиск по MIME-типам и может быть полезен разработчикам аддонов для интеграции с поиском по файлам.