Хук posts_distinct в WPFTS

Хук posts_distinct в WordPress — это фильтр, который позволяет модифицировать ключевое слово DISTINCT в SQL-запросе, используемом для получения постов. WPFTS использует этот хук для добавления или удаления директивы SQL_NO_CACHE в зависимости от настроек плагина.

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

  1. Добавление или удаление 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 обрабатывает его только для запросов, связанных с поиском.