返回
如何在 WordPress Algolia 中排除特定词条的索引?
php
2024-03-14 03:06:58
WordPress 中使用 Algolia 排除特定词条的索引
作为一名经验丰富的程序员,我经常遇到需要在 WordPress 中使用 Algolia 来索引我的自定义文章类型和分类法的场景。然而,有时我会遇到这样的情况:我想排除某些特定的词条,让它们不被 Algolia 索引。
问题:如何排除特定词条的索引?
为了解决这个问题,我们可以利用 Algolia 提供的过滤器来自定义我们的索引过程。在本教程中,我将向你展示如何排除特定词条在自定义文章类型(“events”)的自定义分类法(“events_status”)中的索引。
解决方案:使用 PHP 代码片段
// 排除特定词条的索引
function custom_should_index_term( $should_index, WP_Post $post ) {
$terms_to_exclude = array( 3795 );
if ( false === $should_index ) {
return $should_index;
}
if ( $post->post_type !== 'events' ) {
return $should_index;
}
$post_term_ids = wp_get_post_terms( $post->ID, 'events_status' );
$remaining_term_ids = array_diff( $post_term_ids, $terms_to_exclude );
if ( count( $remaining_term_ids ) === 0 ) {
return false;
}
return $should_index;
}
add_filter('algolia_should_index_post', 'custom_should_index_term', 10, 2);
add_filter('algolia_should_index_searchable_post', 'custom_should_index_term', 10, 2);
代码解析:
$terms_to_exclude
数组指定了要排除的词条 ID。wp_get_post_terms
函数获取特定文章中指定分类法的所有词条 ID。array_diff
函数从$post_term_ids
数组中减去要排除的词条 ID,将剩余的词条 ID 存储在$remaining_term_ids
数组中。- 如果
$remaining_term_ids
数组为空(即所有词条都被排除),则函数返回false
,指示 Algolia 不要索引该文章。 add_filter
函数将custom_should_index_term
函数添加到 Algolia 的algolia_should_index_post
和algolia_should_index_searchable_post
过滤器中,以确保在 Algolia 索引文章之前应用它。
通过使用这段代码,你可以有效地排除特定的词条,让它们不被 Algolia 索引。
常见问题解答
1. 为什么我要排除特定词条的索引?
排除特定词条的索引可能有多种原因。例如,你可能想要排除已标记为“草稿”或“待审核”的文章,或者你可能想要排除包含敏感信息的文章。
2. 除了使用代码片段之外,还有什么其他方法可以排除词条的索引?
除了使用代码片段之外,你还可以使用 Algolia 仪表盘中的“索引规则”功能来排除特定词条的索引。
3. 排除特定词条的索引会影响我的网站的 SEO 吗?
不,排除特定词条的索引不会直接影响你的网站的 SEO。但是,它可能会间接影响你的 SEO,因为你的网站上可供索引的内容会减少。
4. 我可以排除多个词条的索引吗?
是的,你可以使用多个词条的 ID 来排除它们的索引。只需要在 $terms_to_exclude
数组中添加额外的词条 ID 即可。
5. 排除特定词条的索引后,我可以随时恢复它们吗?
是的,你可以随时通过删除代码片段或更新 Algolia 仪表盘中的索引规则来恢复排除的词条的索引。