2017-08-07 46 views
0

在Algolia即時搜索頁面(WordPress插件)我如何排除具有特定ID的帖子?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__' 
       } 
      }); 

回答

4

唯一不會將帖子顯示爲結果一部分的好方法是不編制索引。

索引與Algolia WordPress插件,這裏詳細解釋: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); 
+0

這是正確的答案。謝謝Raymond! :) – happyrobot

-2

轉到文件夾塞>包括>類algolia-search.php中

,找到這個代碼

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

正是在那之後的代碼添加以下代碼

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

然後讓我知道結果。 在我的代碼中,1,2,3是你想要排除的post標識。 謝謝

相關問題