Хук found_posts_query в WPFTS
Фильтр found_posts_query в WordPress позволяет модифицировать SQL-запрос, который используется для определения общего количества найденных постов (found_posts) при использовании постраничной навигации. WPFTS использует этот хук в специфическом случае, когда включен режим разделенного запроса (split_the_query) и необходимо получить точное количество найденных постов с учетом релевантности.
Что делает WPFTS при вызове found_posts_query:
-
Проверка условий: WPFTS не вносит изменений в запрос напрямую, а полагается на стандартную логику WordPress для определения found_posts с помощью SQL_CALC_FOUND_ROWS в большинстве случаев. Этот фильтр используется только в методе wpq_set_found_posts(), который, в свою очередь, вызывается только в определенных случаях при использовании разделенного запроса (is_split_query).
-
Стандартная обработка: В случае разделенного запроса, WordPress выполняет два запроса: первый — для получения ID постов и их релевантности, второй — для получения полных данных постов. Фильтр found_posts_query применяется к первому запросу и позволяет получить точное количество найденных постов с учетом условия WHERE, связанного с релевантностью.
Важные функции, задействованные в обработке found_posts_query:
-
WPFTS_Search::wpq_set_found_posts() (внутренний метод, аналогичный приватному методу WP_Query::set_found_posts())
-
WPFTS_DB::get_var() (для получения found_posts из базы данных)
Как это использовать в разработке аддонов:
Разработчикам аддонов, взаимодействующим с постраничной навигацией и WPFTS, важно понимать, как плагин использует found_posts_query в режиме разделенного запроса. Если ваш аддон модифицирует этот фильтр, убедитесь, что ваша логика не конфликтует с WPFTS.
Дополнительные замечания:
-
В большинстве случаев WPFTS не изменяет стандартный запрос для found_posts.
-
Фильтр found_posts_query используется только в специфическом случае разделенного запроса для получения точного количества найденных постов.