Хук save_post в WPFTS

Хук save_post - это стандартный хук WordPress, который срабатывает каждый раз, когда пост или страница сохраняются или обновляются. WPFTS использует этот хук для поддержания актуальности поискового индекса, переиндексируя содержимое измененного или вновь созданного поста.

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

  1. Синхронизация постов: WPFTS сначала вызывает метод MakePostsSync(true), чтобы убедиться, что внутренний список постов, требующих индексации, актуален. Это гарантирует, что пост, который был только что сохранен, будет включен в список для индексации.

  2. Установка приоритета переиндексации: Плагин выполняет SQL-запрос update wpftsi_index set force_rebuild = 2 where tid = …, чтобы установить посту высокий приоритет для переиндексации. Это гарантирует, что данный пост будет обработан индексатором в первую очередь.

  3. Сброс таймера статуса: Вызывается set_option(‘status_next_ts’, 0), чтобы сбросить таймер статуса индексации. Это приводит к тому, что статус индексации будет пересчитан при следующем запросе статуса, и пользователь увидит актуальную информацию о процессе индексации.

  4. Прерывание текущей итерации индексации: set_option(‘is_break_loop’, 1) устанавливает флаг для прерывания текущего цикла индексации. Это позволяет индексатору начать новую итерацию и обработать пост с высоким приоритетом.

  5. Запуск индексатора: WPFTS вызывает метод CallIndexerStartNoBlocking(), чтобы запустить индексатор в фоновом режиме.

Важные функции, задействованные в обработке save_post:

  • WPFTS_Core::MakePostsSync(true)

  • WPFTS_Core::set_option()

  • WPFTS_Core::CallIndexerStartNoBlocking()

  • wpfts_post_reindex() (вызывается в save_post action)

Как это использовать в разработке аддонов:

Понимание того, как WPFTS использует хук save_post, позволяет разработчикам аддонов эффективно интегрировать свои данные в поисковый индекс. Например, если ваш аддон добавляет кастомные мета-поля, вы можете использовать фильтр wpfts_index_post для добавления значений этих полей в $chunks при индексации поста. Поскольку WPFTS автоматически переиндексирует посты при сохранении, данные вашего аддона также будут обновлены в индексе.

Дополнительные замечания:

  • WPFTS использует неблокирующий запуск индексатора, чтобы не замедлять процесс сохранения поста.

  • Переиндексация происходит в фоновом режиме, поэтому пользователь может продолжить работу с сайтом без задержек.