Хук posts_distinct в WPFTS
Хук posts_distinct в WordPress — это фильтр, который позволяет модифицировать ключевое слово DISTINCT в SQL-запросе, используемом для получения постов. WPFTS использует этот хук для добавления или удаления директивы SQL_NO_CACHE в зависимости от настроек плагина.
Что делает WPFTS при вызове posts_distinct:
- Добавление или удаление SQL_NO_CACHE: WPFTS проверяет значение опции wpfts_nocache (через $wpq->wpftsi_session[‘wpfts_nocache’]). Если эта опция включена (значение больше 0), плагин добавляет директиву SQL_NO_CACHE к ключевому слову DISTINCT. Если опция отключена, директива SQL_NO_CACHE удаляется из запроса, если она там была. Директива SQL_NO_CACHE указывает MySQL не кешировать результаты запроса, что может быть полезно при отладке или при часто изменяющихся данных. Однако это может снизить производительность. Поэтому по умолчанию эта опция отключена, и WPFTS удаляет директиву из запроса.
Важные функции, задействованные в обработке posts_distinct:
- WPFTS_Search::index_posts_distinct()
Как это использовать в разработке аддонов:
Разработчикам аддонов следует учитывать, что WPFTS может добавлять или удалять директиву SQL_NO_CACHE в запросе. Если ваш аддон также работает с этой директивой, убедитесь, что ваша логика не конфликтует с WPFTS.
Дополнительные замечания:
-
WPFTS управляет директивой SQL_NO_CACHE на основании опции wpfts_nocache.
-
Этот хук вызывается для всех запросов WP_Query, но WPFTS обрабатывает его только для запросов, связанных с поиском.