Ah! That’s perfect, thanks. I ended up doing it with the following:
/**
* Add nav_menu_item to indexed Relevanssi post types
*
* @param array|bool $post_types
* @return array
*/
function mytheme_relevanssi_index_nav_menu_items(): array {
return ["post", "page", "nav_menu_item"];
}
add_filter("pre_option_relevanssi_index_post_types", "mytheme_relevanssi_index_nav_menu_items", 10, 0);
/**
* Only allow "custom link" nav_menu_items to be indexed
*
* @param array<array<mixed>> $hits Array of Relevnassi hits
* @return array<array<mixed>>
*/
function mytheme_relevanssi_filter_nav_menu_items(array $hits = []): array {
$hits_filtered = [];
foreach ($hits[0] as $hit) {
if ($hit->post_type !== "nav_menu_item" XOR (($url = get_post_meta($hit->ID, "_menu_item_url", true)) && $url !== "#")) {
$hits_filtered[] = $hit;
}
}
$hits[0] = $hits_filtered;
return $hits;
}
add_filter("relevanssi_hits_filter", "mytheme_relevanssi_filter_nav_menu_items", 10, 1);
The second filter removes any menu item that *isn’t* a custom link to prevent duplicate listings, seems to be working perfectly!
Quick question for the first filter: Is there a way to *append* my new post type instead of having specify all of the ones I want? Would be nice to “import” the settings from the back-end and just tack on this extra one, but not a huge deal if it’s not possible.
-
This reply was modified 3 years, 1 month ago by
JacobTheDev.
-
This reply was modified 3 years, 1 month ago by
JacobTheDev.
-
This reply was modified 3 years, 1 month ago by
JacobTheDev.
-
This reply was modified 3 years, 1 month ago by
JacobTheDev.