wpfts_irule/ (Filter)

Фильтр wpfts_irule/<ident> в WP Fast Total Search — это мощный инструмент для модификации данных поста перед индексацией. Он используется в сочетании с правилами индексации (Indexing Rules) и позволяет применять различные преобразования к значениям полей поста, извлеченным согласно этим правилам. <ident> в названии фильтра — это идентификатор конкретного фильтра, который должен совпадать с идентификатором, указанным в правиле индексации.

Когда используется

Этот фильтр применяется, когда необходимо выполнить определенные преобразования над данными поста перед их индексацией. Примеры использования:

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

Аргументы

  • $s (string|array): Значение поля поста, которое необходимо обработать. Может быть строкой или массивом, в зависимости от типа данных.
  • $opts (array): Массив опций, передаваемых фильтру. Набор опций зависит от конкретного фильтра (идентификатора <ident>).
  • $post (object WP_Post): Объект поста WordPress. Позволяет получить доступ к любым данным поста.
  • &$chunks (array): Ссылка на массив данных, подготовленных для индексации. Важно: этот параметр передается по ссылке, поэтому любые изменения, внесенные в массив $chunks внутри обработчика фильтра, будут сохранены.
  • $r (array): Массив параметров правила индексации, в котором используется данный фильтр. Может быть использован для доступа к другим параметрам правила.

Возвращаемое значение

  • $s (string|array): Модифицированное значение поля поста.

Пример

Предположим, у вас есть правило индексации, которое извлекает значение мета-поля my_custom_field. Вы хотите удалить все HTML-теги из этого значения перед индексацией. Вы можете создать фильтр wpfts_irule/strip_tags и использовать его в правиле:

//  Фильтр  для  удаления  HTML-тегов.
add_filter('wpfts_irule/strip_tags', 'my_strip_tags_filter', 10, 5);
function my_strip_tags_filter($s, $opts, $post, &$chunks, $r) {
  return wp_strip_all_tags($s);
}
 
// Внутри правила индексации
'actions' => array(
		array(
			'src' => '.my_custom_field',
			'dest' => 'my_custom_field',
			'filters' => array(
				array('ident' => 'strip_tags')
			),
		)
	),

Встроенные фильтры wpfts_irule/<ident>

В коде плагина уже реализованы следующие фильтры:

  • wpfts_irule/content_open_shortcodes: Обрабатывает шорткоды в контенте перед индексацией. Аргументы: $s, $opts, $post, &$chunks, $rule. Возвращает: Обработанный контент.
  • wpfts_irule/content_is_remove_nodes: Удаляет определенные HTML-узлы (например, <script> и <style>) из контента. Аргументы: $s, $opts, $post, &$chunks, $rule. Возвращает: Очищенный контент.
  • wpfts_irule/content_strip_tags: Удаляет все HTML-теги из контента. Аргументы: $s, $opts, $post, &$chunks, $rule. Возвращает: Текст без HTML-тегов.

Важные замечания

  • Фильтр wpfts_irule/<ident> вызывается только в контексте правил индексации.
  • Идентификатор фильтра <ident> должен быть уникальным в рамках плагина.
  • Вы можете создавать свои собственные фильтры с любыми идентификаторами и использовать их в своих правилах индексации.

Фильтр wpfts_irule/<ident> предоставляет разработчикам мощный и гибкий механизм для предобработки данных перед индексацией в WP Fast Total Search.