Skip to content
WP Engine |Headless Platform

Using Hooks and Filters

Filters the post fields before indexing.

apply_filters( 'wpe_smartsearch/extra_fields', string $data, WP_Post $post )

Use this filter to add or remove fields before an object is indexed.

$data array

Contains all of the data before indexing.

$post WP_Post

The current post object being indexed.

Adding a custom field.

add_filter(
'wpe_smartsearch/extra_fields',
function( array $data, WP_Post $post ) {
$data['custom-field'] = 'custom field test';
return $data;
},
10,
2
);

Adding the post permalink.

add_filter(
'wpe_smartsearch/extra_fields',
function( array $data, WP_Post $post ) {
//sample value http://localhost:8000/hello-world
$data['url'] = get_permalink($post);
return $data;
},
10,
2
);

Adding the post locale with a language plugin, i.e. polylang

add_filter(
'wpe_smartsearch/extra_fields',
function( array $data, WP_Post $post ) {
//sample values EN | ES
$data['locale'] = pll_get_post_language($post->ID);
return $data;
},
10,
2
);

wpe_smartsearch/extra_search_config_fields

Section titled “wpe_smartsearch/extra_search_config_fields”

Filters the search config fields.

apply_filters( 'wpe_smartsearch/extra_search_config_fields', array $fields, string $post_type )

Use this filter to add or remove fields to the Search Config.

$fields array

Contains all of the search config fields for the given $post_type.

$post WP_Post

The current post_type being processed for Search Config fields.

Adding a custom search config field.

add_filter(
'wpe_smartsearch/extra_search_config_fields',
function ( $fields, $post_type ) {
if ($post_type === 'post' ) {
$fields[] = 'my-custom-field';
}
return $fields;
},
10,
2
);

The following search config field will get added to all post types.

add_filter(
'wpe_smartsearch/extra_search_config_fields',
function ( $fields, $post_type ) {
$fields[] = 'all-post-types-custom-field';
return $fields;
},
10,
2
);

Filters the post types ban list.

apply_filters( 'wpe_smartsearch/excluded_post_types' );

Filters a list of post types that won’t be considered for WP Engine Smart Search

add_filter(
'wpe_smartsearch/excluded_post_types',
function ( ) {
return array(
'zombie',
'rabbit',
'page'
);
},
10,
2
);

wpe_smartsearch/search/facet_blocks_enabled

Section titled “wpe_smartsearch/search/facet_blocks_enabled”

Enables or disables WPE Engine Smart Search search-related Facets.

apply_filters( 'wpe_smartsearch/search/facet_blocks_enabled', true )

This filter enables or disables the search-related Facet Blocks provided by WP Engine Smart Search. They are enabled by default. It would be useful to disable them if you are not using them, or if there is a conflict with your custom facets, theme or plugin.

Disabling WPE Engine Smart Search Facets.

add_filter( 'wpe_smartsearch/search/facet_blocks_enabled', '__return_false' );

Filter ACF fields from being indexed to WPE Engine Smart Search.

$excluded_field_names = apply_filters( 'wpe_smartsearch/acf/excluded_field_names', array() );

This filter prevents ACF fields to be indexed using the field name. This is very useful for a number of reasons:

  • Preventing unnecessary data from being indexed, increases performance.
  • Prevents errors from being thrown when indexing data ( Errors like: Limit of total fields [1000] has been exceeded )

You would want to prevent ACF fields with names ‘acf_field_name1’, ‘acf_field_name2’, ‘acf_field_name3’ are not indexed.

add_filter( 'wpe_smartsearch/acf/excluded_field_names', function ( $excluded_field_names ) {
$custom_excluded_field_names= array(
'acf_field_name1',
'acf_field_name2',
'acf_field_name3',
);
return array_merge($excluded_field_names,$custom_excluded_field_names );
},
10,
1
);

wpe_smartsearch/allow_post_content_filtering

Section titled “wpe_smartsearch/allow_post_content_filtering”

Allow post content filtering before it is indexed by WP Engine Smart Search.

$allow_post_content_filtering = apply_filters( 'wpe_smartsearch/allow_post_content_filtering', true );
if ( $allow_post_content_filtering ) {
$post_array['post_content'] = handle_tags( $post_array['post_content'] );
}

This filter enables or disables the default content stripping before it is indexed. By default, WP Engine Smart Search strips all HTML tags, shortcodes, and block editor comments from the content via the handle_tags function.

You can use this filter to disable the default content stripping. This is useful if you want to:

  • Preserve certain HTML tags or implement your own content cleaning logic.
  • Use a custom content processing function, as the default stripping might be memory-intensive for very large post content
  • Custom post content processing function can be implemented by using the wpe_smartsearch/extra_fields filter.

You want to prevent the default HTML stripping for all posts to preserve the HTML structure in the search index.

add_filter(
'wpe_smartsearch/allow_post_content_filtering',
'__return_false'
);

Controls whether Smart Search is enabled for a query.

apply_filters( 'wpe_aitk/enable_search', bool $enabled, WP_Query $query )

By default, Smart Search is enabled for all search queries and WooCommerce product queries (when WooCommerce support is active). Use this filter to disable Smart Search for specific queries if needed, such as for specific post types, categories, custom query scenarios, or to fallback to WordPress’s native search functionality in certain contexts.

$enabled bool

Whether Smart Search is enabled for the query. Default is true.

$query WP_Query

The current WP_Query object being processed.

Disable Smart Search for all queries.

add_filter(
'wpe_aitk/enable_search',
'__return_false'
);

Disable Smart Search only for specific post types.

add_filter(
'wpe_aitk/enable_search',
function( $enabled, $query ) {
// Disable Smart Search for the 'product' post type
if ( isset( $query->query_vars['post_type'] ) && $query->query_vars['post_type'] === 'product' ) {
return false;
}
return $enabled;
},
10,
2
);

Disable Smart Search for WooCommerce product queries on specific pages.

add_filter(
'wpe_aitk/enable_search',
function( $enabled, $query ) {
// Disable on the shop page only
if ( is_shop() ) {
return false;
}
return $enabled;
},
10,
2
);

Disable Smart Search based on custom query variables.

add_filter(
'wpe_aitk/enable_search',
function( $enabled, $query ) {
// Disable for queries with a custom flag
if ( isset( $query->query_vars['use_native_search'] ) && $query->query_vars['use_native_search'] ) {
return false;
}
return $enabled;
},
10,
2
);