Хук split_the_query в WPFTS

Хук split_the_query в WordPress — это фильтр, который позволяет разработчикам включать или отключать режим разделенного запроса в WP_Query. В этом режиме WordPress сначала выполняет запрос для получения ID постов, а затем выполняет отдельный запрос для получения полных данных этих постов. WPFTS использует этот хук для активации разделенного запроса в определенных случаях, чтобы оптимизировать производительность поиска.

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

  1. Проверка условий для разделенного запроса: WPFTS проверяет, установлен ли флаг $wpq->wpftsi_session[‘use_indexed_search’] (включен ли индексный поиск). Если индексный поиск включен, плагин проверяет, есть ли в запросе LIMIT и не превышает ли количество запрашиваемых постов на странице (posts_per_page) определенный лимит. Также проверяется, выбираются ли все поля из таблицы wp_posts ({$wpdb->posts}.*). Если все эти условия выполнены, WPFTS включает режим разделенного запроса.

  2. Установка флага is_split_query: Если режим разделенного запроса включен, WPFTS устанавливает флаг $wpq->wpftsi_session[‘is_split_query’] в true. Этот флаг затем используется в других частях плагина, например, в хуке posts_pre_query, для получения полных данных постов.

Важные функции, задействованные в обработке split_the_query:

  • WPFTS_Search::index_split_the_query()

Как это использовать в разработке аддонов:

Разработчикам аддонов важно понимать, как WPFTS управляет режимом разделенного запроса. Если ваш аддон также взаимодействует с этим режимом, убедитесь, что ваша логика не конфликтует с WPFTS. В частности, учитывайте, что WPFTS может включать разделенный запрос автоматически в зависимости от параметров поискового запроса.

Дополнительные замечания:

  • Разделенный запрос в WPFTS используется для оптимизации производительности при поиске с большим количеством результатов.

  • WPFTS включает разделенный запрос только при определенных условиях, чтобы избежать ненужной сложности и снижения производительности в простых случаях.