Хук found_posts_query в WPFTS

Фильтр found_posts_query в WordPress позволяет модифицировать SQL-запрос, который используется для определения общего количества найденных постов (found_posts) при использовании постраничной навигации. WPFTS использует этот хук в специфическом случае, когда включен режим разделенного запроса (split_the_query) и необходимо получить точное количество найденных постов с учетом релевантности.

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

  1. Проверка условий: WPFTS не вносит изменений в запрос напрямую, а полагается на стандартную логику WordPress для определения found_posts с помощью SQL_CALC_FOUND_ROWS в большинстве случаев. Этот фильтр используется только в методе wpq_set_found_posts(), который, в свою очередь, вызывается только в определенных случаях при использовании разделенного запроса (is_split_query).

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