WordPressで有料記事を販売している場合等に、有料記事に検索ワードが含まれていた場合、デフォルトでは検索結果に有料記事も一緒に表示してしまう。
これだと有料記事の内容が購入者以外にもバレてしまうかもしれないから、これはぜひ回避したい。
今日はこういう時に使えるコードを紹介する。
まずは、有料記事を一つのカテゴリーにまとめる。
そして、有料記事のカテゴリーが5だとする。
そうしたら、以下のコードをfunctions.phpに入れてみて。
// 検索結果から特定のカテゴリを除外するコード
function mycustom_search_filter_cat_func( $query ) {
if ( $query->is_search() && $query->is_main_query() && ! $query->is_admin() ) {
$cat_id = array( '5' );
$query->set( 'category__not_in', $cat_id );
}
return $query;
}
add_filter( 'pre_get_posts', 'mycustom_search_filter_cat_func' );
カテゴリーIDが5と15等、二つ以上に分かれてしまう場合は以下のようにいれる。
// 検索結果から特定のカテゴリを除外するコード
function mycustom_search_filter_cat_func( $query ) {
if ( $query->is_search() && $query->is_main_query() && ! $query->is_admin() ) {
$cat_id = array( '5', '15' );
$query->set( 'category__not_in', $cat_id );
}
return $query;
}
add_filter( 'pre_get_posts', 'mycustom_search_filter_cat_func' );
コメントを残す
Only people in my network can comment.