Algolia - WordPress - 即时搜索页面如何排除具有特定ID的帖子

时间:2017-08-07 15:16:55

标签: wordpress algolia

在Algolia即时搜索页面(WordPress插件)中如何排除具有特定ID的帖子?

这是默认的即时搜索设置。如何添加过滤器以从搜索中排除帖子ID?

            var search = instantsearch({
                appId: algolia.application_id,
                apiKey: algolia.search_api_key,
                indexName: algolia.indices.searchable_posts.name,
                urlSync: {
                    mapping: {'q': 's'},
                    trackedParameters: ['query']
                },
                searchParameters: {
                    facetingAfterDistinct: true,
        highlightPreTag: '__ais-highlight__',
        highlightPostTag: '__/ais-highlight__'
                }
            });

2 个答案:

答案 0 :(得分:4)

作为结果的一部分,不显示帖子的唯一好方法是不对其进行索引。

详细解释了使用WordPress的Algolia插件进行索引:https://community.algolia.com/wordpress/indexing-flow.html#indexing-decision

以下是一个可以帮助您入门的代码段:

<?php
// to put in the functions.php file of your active theme.
/**
 * @param bool    $should_index
 * @param WP_Post $post
 *
 * @return bool
 */
function exclude_post_ids( $should_index, WP_Post $post )
{
    // Add all post IDs you don't want to make searchable.
    $excluded_ids = array( 14, 66 );
    if ( false === $should_index ) {
        return false;
    }

    return ! in_array( $post->ID, $excluded_ids, true );
}

// Hook into Algolia to manipulate the post that should be indexed.
add_filter( 'algolia_should_index_searchable_post', 'exclude_post_ids', 10, 2 );

答案 1 :(得分:-3)

转到插件文件夹&gt;包括&gt; 类algolia-search.php中

并找到此代码

$query->set( 'post__in', $post_ids );

在该代码之后添加此代码

$query->set( 'post__not_in', array(1,2,3));

然后让我知道结果。 在我的代码中,1,2,3是要排除的帖子ID。 感谢