2017-09-13 98 views
0

我想從CPT「events」的「events_status」分類中排除ID爲3795的單個術語「存檔」。在嘗試將WordPress後端中的「events」cpt重新編入索引時,我收到了空的錯誤彈出窗口。這是我的代碼:Algolia - WordPress從索引中排除單個術語

// EXCLUDE TERM FROM BEING INDEXED 
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); 

回答

0

這是怎麼做的權利。 wp_get_post_terms()還需要使用我們想要獲取的字段的數組。由於我們正在比較身份證,所以我們要求它提供身份證件。

// EXCLUDE TERM FROM BEING INDEXED 
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', array("fields" => "ids")); 
    $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);