Developer Documentation

Search Index Modification

Storing Additional Data

The default search index will include all post data, such as content, author, title, date, meta and terms. There are situations where you may want to add custom data, for example: suppose you want to support search for content based on a custom relationship to another post.

In this case, you would modify the data for a all posts before the data is sent to the search index for storage. To do so, add your extra data via the ep_post_sync_args_post_prepare_meta filter.

add_filter( 'ep_post_sync_args_post_prepare_meta', function ( array $post_data, int $post_id ) : array {

	// This filter is called for all post types, so only add data to our "events" post type.
	if ( $post_data['post_type'] !== 'events' ) {
		return $post_data;
	}

	// Get the country name from the country ID stored in post meta.
	$country = event_get_country( get_post_meta( 'country_id', $post_id, true ) );
	$post_data['country'] = $country->get_name();

	return $post_data;
}, 10, 2 );

This will mean the searchable data stored in the index will include the country name.