Indexing post types
Enterprise Search automatically indexes all public post types.
In this example, a custom function uses pre_get_posts
to customize search for an event
custom post type. Because the event
custom post type is public, it is in the post_type
allow list and indexed by default.
add_action( 'pre_get_posts', 'my_event_query_filter' );
function my_event_query_filter( $query ) {
if ( $query->is_main_query() && get_query_var( 'events', false ) ) {
$query->set( 'post_type' ), 'event' );
}
}
Note
Indexing can be enabled for all post types, including private post types, by activating the Protected Content feature, but also risks exposing non-public content to unauthorized users.
Adding post types to the allow list
Use the ep_indexable_post_types
filter to customize the indexable post types. This filter is useful if there is a need for specific private post types to be indexed, or to exclude specific public post types from indexing.
The ep_indexable_post_types
filter uses a list with the below array format:
[
'event' => 'event',
'post' => 'post',
'page' => 'page',
]
In this code example, the private post type attachment
is added to the allow list for indexing:
function mysite_indexable_post_types( $types ) {
$types['attachment'] = 'attachment';
return $types;
}
add_filter( 'ep_indexable_post_types', 'mysite_indexable_post_types', 10, 1 );
Note
To fully index a post type, be sure to allow all associated post statuses, such as inherit
for attachments.
Excluding post types from the allow list
To exclude specific post types (e.g. ones which do not contain information that will be displayed to users), use the same allow list to block indexing by programmatically removing the entry.
In this code example, the ai_log
, msm_sitemap
, wlo_option
, vip-legacy-redirect
custom post types are excluded from indexing:
function mysite_events_indexable_post_types( $types ) {
$deny_list = array( 'ai_log', 'msm_sitemap', 'wlo_option', 'vip-legacy-redirect' );
// unset the items with values matching the deny list
$types = array_diff( $types, $deny_list );
return $types;
}
add_filter( 'ep_indexable_post_types', 'mysite_events_indexable_post_types', 10, 1 );
Last updated: December 17, 2024