[WordPress] あるページを検索の対象外にしたい
やりたいこと
- お問い合わせページや利用規約など、あるページを検索に引っかけたくないということがあります
- functions.phpで検索のフィルターをかける方法の紹介です
サンプルコード(functions.php)
function filter_search($query) {
$fliter_list = array(
'aaa',
'bbb',
'ccc/ddd'
);
$fliter_list_id = array();
foreach( $fliter_list as $value ) {
$page = get_page_by_path($value);
array_push( $fliter_list_id, $page->ID );
}
if( !$query->is_admin() && $query->is_search() ) {
$query->set( 'post__not_in', $fliter_list_id );
}
return $query;
}
add_filter( 'pre_get_posts', 'filter_search' );
仕組み、解説、補足など
- 「$fliter_list」にページのスラッグ名をセットすると、そのページが検索の対象外になります
- 「/」で区切れば子ページも指定できます
ご質問など受け付けています
記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。
ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。