Хук split_the_query в WPFTS
Хук split_the_query в WordPress — это фильтр, который позволяет разработчикам включать или отключать режим разделенного запроса в WP_Query. В этом режиме WordPress сначала выполняет запрос для получения ID постов, а затем выполняет отдельный запрос для получения полных данных этих постов. WPFTS использует этот хук для активации разделенного запроса в определенных случаях, чтобы оптимизировать производительность поиска.
Что делает WPFTS при вызове split_the_query:
-
Проверка условий для разделенного запроса: WPFTS проверяет, установлен ли флаг $wpq->wpftsi_session[‘use_indexed_search’] (включен ли индексный поиск). Если индексный поиск включен, плагин проверяет, есть ли в запросе LIMIT и не превышает ли количество запрашиваемых постов на странице (posts_per_page) определенный лимит. Также проверяется, выбираются ли все поля из таблицы wp_posts ({$wpdb->posts}.*). Если все эти условия выполнены, WPFTS включает режим разделенного запроса.
-
Установка флага 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 включает разделенный запрос только при определенных условиях, чтобы избежать ненужной сложности и снижения производительности в простых случаях.