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.