Хук posts_where в WPFTS

Фильтр posts_where в WordPress позволяет модифицировать часть SQL-запроса WHERE, используемую для выборки постов. WPFTS использует этот хук для добавления условий, связанных с типами MIME, при поиске по вложениям.

Что делает WPFTS при вызове posts_where:

  1. Проверка использования индексного поиска: Плагин проверяет, включен ли индексный поиск WPFTS ($wpq->wpftsi_session[‘use_indexed_search’]).

  2. Добавление условий для 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-типам и может быть полезен разработчикам аддонов для интеграции с поиском по файлам.