• 解決済 shokunin-yam

    (@shokunin-yam)


    wordPressにプラグイン「FAQ manager」を入れてFAQページを構築しております。
    サイト内検索をする際、特定Topic(カテゴリ)を検索対象から外したいと思い、
    以下のコードを「functions.php」に実装したのですが、特定Topic(カテゴリ)の
    FAQが検索に引っかかります。

    function SearchFilter($query) {
        if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
            $query->set('category__not_in', array(1,2));//カテゴリーIDを指定
        }
        return $query;
    }
    add_filter('pre_get_posts','SearchFilter');

    もし、上記の解決方法がご存知でしたらご教授のほどお願いいたします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 shokunin-yam

    (@shokunin-yam)

    自己解決しましたのでお知らせします。
    以下のコードを「functions.php」に実装するだけです。

    // FAQとカテゴリを紐付ける
    function searchJoin($join) {
    	if ( is_search() ) {
    		$join = $join . "INNER JOIN wp_term_relationships ON (wp_term_relationships.object_id = wp_posts.ID)";
    	}
    	return $join;
    }
    add_filter('posts_join', 'searchJoin');
    
    // 該当カテゴリを検索条件から除外する
    function searchFilter($where, $query) {
    	if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
    		$excl_list = "除外するTopic(カテゴリ)ID (複数の場合はカンマで区切る)";
    		$where = $where . "AND (wp_term_relationships.term_taxonomy_id NOT IN ( " . $excl_list . " )) AND (wp_posts.post_type IN ( 'question' ))";
    	}
    	return $where;
    }
    add_filter('posts_search', 'searchFilter', 10, 2);

    ご参考になれば幸いです。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「FAQ managerのサイト内検索で特定Topic(カテゴリ)を検索対象から外すには?」には新たに返信することはできません。