在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__'
}
});
答案 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。 感谢