Расширение функционала

5. Расширение функционала

WP Fast Total Search (WPFTS) предоставляет мощный поисковый движок, но его стандартная функциональность может быть недостаточной для некоторых проектов. Разработчикам может потребоваться расширить функционал WPFTS для решения специфических задач, таких как:

  • Индексация дополнительных данных: WPFTS по умолчанию индексирует заголовки, контент и отрывки постов. Вам может потребоваться индексировать дополнительные данные, такие как мета-поля, термины таксономий, данные из других плагинов или даже данные из внешних источников.

  • Модификация алгоритма поиска: Вы можете изменить способ, которым WPFTS обрабатывает поисковые запросы, например, добавить поддержку синонимов или изменить веса кластеров для более точного ранжирования результатов.

  • Изменение отображения результатов: Вы можете настроить внешний вид результатов поиска, добавить или удалить информацию, изменить формат отображения Smart Excerpts и т.д.

  • Интеграция с другими плагинами: Вы можете интегрировать WPFTS с другими плагинами, чтобы расширить возможности поиска или добавить новые функции.

Типичные примеры расширения функционала

  • Индексация данных WooCommerce: Добавление в индекс данных о товарах, таких как цена, SKU, атрибуты и т.д.

  • Индексация пользовательских мета-полей: Добавление в индекс значений произвольных мета-полей, связанных с постами.

  • Изменение весов кластеров для различных типов постов: Увеличение веса заголовка для новостей и уменьшение веса контента для страниц.

  • Добавление фильтрации по категориям в виджет поиска: Позволяет пользователям ограничивать поиск определенными категориями.

Основные способы расширения функционала

WPFTS предоставляет два основных способа расширения функционала:

  1. Использование хуков (actions и filters) в файле functions.php темы или дочерней темы: Это самый простой способ для небольших изменений. Вы можете добавлять свои функции-обработчики к хукам WPFTS для модификации его поведения. Подробное описание всех доступных хуков приведено в соответствующих разделах этой документации.

  2. Написание плагина-аддона: Для более сложных расширений рекомендуется создавать отдельный плагин-аддон. Это позволит лучше организовать код и избежать конфликтов с другими плагинами. Аддон может содержать свои собственные настройки, скрипты и стили. Он может взаимодействовать с WPFTS через хуки и фильтры, а также через API плагина.

Пример расширения функционала через functions.php (добавление мета-поля в индекс)

add_filter('wpfts_index_post', 'add_custom_meta_to_index', 10, 3);
 
function add_custom_meta_to_index($chunks, $post, $is_refresh_raw_cache) {
    $custom_field_value = get_post_meta($post->ID, 'my_custom_field', true);
	if ($custom_field_value) {
		$chunks['my_custom_field'] = $custom_field_value;
	}
 
	return $chunks;
}

Пример структуры плагина-аддона

wpfts-addon-customdata/
├── wpfts-addon-customdata.php    // Основной файл плагина
└── includes/
    └── addon-functions.php // Файл с функциями аддона

Настоятельно рекомендуется соблюдать следующий формат имени для аддона: wpfts-addon-<имя аддона>. Это поможет сгруппировать аддоны в списке плагинов.

В файле wpfts-addon-customdata.php вы можете зарегистрировать свой аддон и подключить необходимые файлы. В файле addon-functions.php вы можете разместить код, который будет взаимодействовать с WPFTS через хуки и фильтры.

Подробные примеры расширения функционала WPFTS приведены в разделе “Примеры использования”.