WordPressのサイトに検索機能を付け、検索した際に特定の記事、カテゴリーや固定ページを結果に表示させない方法をシェアします。送信完了ページなど、表示されては困るページや記事を隠します。
ちなみに、WordPressのサイト内の検索のお話です。Google等のネット検索結果の事ではありません。ネット検索に表示されない様にするにはSEOプラグインを使うのが便利です。
INDEX
設定の共通事項
function.phpに記載します。子テーマをお使いだと思いますので、子テーマの中の function.php に書いて下さい。バクアップを取ってから作業すると安心です。
何かとIDを使います。例えば、この記事の番号は63368の様です。記事を書いているページのURLの部分にIDがあります。

同じ要領でカテゴリーIDも取得できます。
IDで特定のページ、記事を除外する
固定ページ、投稿ならIDさえ入力すればOKです。array(ID,ID,ID)とIDの所に番号を書きます。
function search_pre_get_posts( $query ) {
if ( $query->is_search && !is_admin() ){
$query->set( 'post__not_in', array(1,2,3,4) );
}
return $query;
}
add_action( 'pre_get_posts', 'search_pre_get_posts' );
全ての固定ページを除外する
固定ページは検索するまでもないんじゃ!という場合はまとめてえーい!と表示させない事も可能です。このサイトではその様にしています。
function mycus_search_filter_post_only_func( $query ) {
if ( $query->is_search() && $query->is_main_query() && ! $query->is_admin() ) {
$query->set( 'post_type', 'post' );
}
return $query;
}
add_filter( 'pre_get_posts', 'mycus_search_filter_post_only_func' );
IDで特定カテゴリーの投稿を除外する
array(ID,ID,ID) とIDの所に番号
function search_pre_get_posts( $query ) {
if ( $query->is_search && !is_admin() ){
$query->set('category__not_in', array(1,2,3,4) );
}
return $query;
}
add_action( 'pre_get_posts', 'search_pre_get_posts' );
コメント ※ハンドルネームでお願いします