wpfts_chunks_before_indexing (Filter)
Фильтр wpfts_chunks_before_indexing
в WP Fast Total Search вызывается непосредственно перед индексацией данных поста. Он получает на вход массив $chunks
, содержащий данные, подготовленные для индексации, и позволяет внести последние изменения в эти данные перед их добавлением в индекс.
Когда используется
Этот фильтр может быть использован для:
- Финальной обработки данных перед индексацией: Например, вы можете удалить HTML-теги, преобразовать специальные символы или привести текст к нижнему регистру.
- Добавления данных из других источников: Вы можете добавить в
$chunks
данные из связанных таксономий, мета-полей или других постов. - Удаления данных из индекса: Вы можете удалить определенные кластеры или их части из массива
$chunks
, чтобы исключить их из индекса. - Отладки процесса индексации: Вы можете использовать этот фильтр для вывода содержимого
$chunks
и проверки, какие данные будут проиндексированы.
Аргументы
$chunks
(массив): Массив данных, подготовленных для индексации. Ключи массива — названия кластеров, значения — строки или массивы строк с данными.$post
(объект WP_Post): Объект поста WordPress.
Возвращаемое значение
$chunks
(массив): Модифицированный массив данных для индексации.
Пример (удаление HTML-тегов из всех кластеров)
add_filter('wpfts_chunks_before_indexing', 'strip_tags_from_chunks', 10, 2);
function strip_tags_from_chunks($chunks, $post) {
foreach ($chunks as $cluster => &$data) { // & - важно! Изменяем данные по ссылке
if (is_string($data)) {
$data = wp_strip_all_tags($data);
} elseif (is_array($data)) {
// обрабатываем случай, когда данные в кластере - массив строк
foreach ($data as &$item) {
$item = wp_strip_all_tags($item);
}
}
}
return $chunks;
}
Пример (добавление терминов таксономии в индекс)
add_filter('wpfts_chunks_before_indexing', 'add_taxonomy_terms_to_index', 10, 2);
function add_taxonomy_terms_to_index( $chunks, $post ) {
$taxonomies = array('category', 'post_tag'); // список таксономий
$terms_string = '';
foreach($taxonomies as $taxonomy) {
$terms = get_the_terms( $post->ID, $taxonomy );
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
$terms_string .= $term->name . ' ';
}
}
}
if ($terms_string) {
$chunks['taxonomy_terms'] = $terms_string;
}
return $chunks;
}
Важные замечания
- Фильтр
wpfts_chunks_before_indexing
вызывается непосредственно перед индексацией, поэтому это последняя возможность изменить данные, которые будут добавлены в индекс. - Изменения, внесенные в массив
$chunks
внутри обработчика этого фильтра, будут сохранены в индексе.
Этот фильтр предоставляет разработчикам максимальную гибкость в управлении данными, которые индексируются плагином WP Fast Total Search.