Как я могу исключить определенные категории страниц WordPress из индексации в Algolia?
Algolia - Wordpress - исключить категорию из индексации
Ответы (1)
Прежде всего, я бы порекомендовал вам придерживаться новой версии плагина. На момент написания последней версией была 0.2.5. Действительно, старая версия (0.0.1) больше не будет поддерживаться.
Что касается вашего вопроса, действительно можно отфильтровать, какие сообщения вы хотите отправить в Алголию, и сделать их доступными для поиска.
Из вашего вопроса я понимаю, что у вас есть страницы, назначенные категориям, и вы хотели бы избежать появления страниц из определенных категорий в результатах поиска. Если эти первоначальные утверждения неверны, пожалуйста, прокомментируйте этот ответ, и я с удовольствием обновлю его!
Вы можете подключиться к решению об индексации поста с помощью фильтров WordPress. В вашем случае, если вы хотите исключить страницы из индекса searchable_posts
, вы можете использовать фильтр algolia_should_index_searchable_post
. Если вы хотите исключить страницы из индекса posts_page
, вы можете использовать фильтр algolia_should_index_post
.
Вот пример того, как вы можете исключить все страницы из списка категорий, идентифицированных их идентификаторами.
<?php
// functions.php of your theme
// or in a custom plugin file.
// We alter the indexing decision making for both the posts index and the searchable_posts index.
add_filter('algolia_should_index_post', 'custom_should_index_post', 10, 2);
add_filter('algolia_should_index_searchable_post', 'custom_should_index_post', 10, 2);
/**
* @param bool $should_index
* @param WP_Post $post
*
* @return bool
*/
function custom_should_index_post( $should_index, WP_Post $post ) {
// Replace these IDs with yours ;)
$categories_to_exclude = array( 7, 22 );
if ( false === $should_index ) {
// If the decision has already been taken to not index the post
// stick to that decision.
return $should_index;
}
if ( $post->post_type !== 'page' ) {
// We only want to alter the decision making for pages.
// We we are dealing with another post_type, return the $should_index as is.
return $should_index;
}
$post_category_ids = wp_get_post_categories( $post->ID );
$remaining_category_ids = array_diff( $post_category_ids, $categories_to_exclude );
if ( count( $remaining_category_ids ) === 0 ) {
// If the post is a page and belongs to an excluded category,
// we return false to inform that we do not want to index the post.
return false;
}
return $should_index;
}
Дополнительную информацию о расширении плагина Algolia Search для WordPress можно найти в документации: Основы расширения плагин
Обновление:
Код был обновлен, чтобы гарантировать, что он не исключает продукт, если он связан с несколькими категориями, и не все из них исключены.