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.