返回

如何在 WordPress Algolia 中排除特定词条的索引?

php

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);

代码解析:

  1. $terms_to_exclude 数组指定了要排除的词条 ID。
  2. wp_get_post_terms 函数获取特定文章中指定分类法的所有词条 ID。
  3. array_diff 函数从 $post_term_ids 数组中减去要排除的词条 ID,将剩余的词条 ID 存储在 $remaining_term_ids 数组中。
  4. 如果 $remaining_term_ids 数组为空(即所有词条都被排除),则函数返回 false,指示 Algolia 不要索引该文章。
  5. add_filter 函数将 custom_should_index_term 函数添加到 Algolia 的 algolia_should_index_postalgolia_should_index_searchable_post 过滤器中,以确保在 Algolia 索引文章之前应用它。

通过使用这段代码,你可以有效地排除特定的词条,让它们不被 Algolia 索引。

常见问题解答

1. 为什么我要排除特定词条的索引?

排除特定词条的索引可能有多种原因。例如,你可能想要排除已标记为“草稿”或“待审核”的文章,或者你可能想要排除包含敏感信息的文章。

2. 除了使用代码片段之外,还有什么其他方法可以排除词条的索引?

除了使用代码片段之外,你还可以使用 Algolia 仪表盘中的“索引规则”功能来排除特定词条的索引。

3. 排除特定词条的索引会影响我的网站的 SEO 吗?

不,排除特定词条的索引不会直接影响你的网站的 SEO。但是,它可能会间接影响你的 SEO,因为你的网站上可供索引的内容会减少。

4. 我可以排除多个词条的索引吗?

是的,你可以使用多个词条的 ID 来排除它们的索引。只需要在 $terms_to_exclude 数组中添加额外的词条 ID 即可。

5. 排除特定词条的索引后,我可以随时恢复它们吗?

是的,你可以随时通过删除代码片段或更新 Algolia 仪表盘中的索引规则来恢复排除的词条的索引。