沼の底(東京)ブログ(気分で変わるタイトル)
沼の底(東京)を生き抜くための光と希望を与えるブログ

【WordPress】固定ページをサーチさせない方法。functions.phpに書く方法と各テンプレートに直接書く方法

2017年05月1日(UPDATE:2017年09月10日)
TIPS | , , , ,

固定ページをサーチさせない方法で、ほとんどの場合functions.phpに書く方法は一番良い方法だと思うのですが、各テンプレートごとに表示件数変えたり、同じテンプレート内で違う条件で結果を複数表示したりすると、直接書いたほうがよかったりすることがあります。
そのため、固定ページをサーチさせない方法のfunctions.phpに書く方法と各テンプレートに直接書く方法を両方メモっておきます。

functions.phpに書く方法

//functions.php
function SearchFilter($query) {
    if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
        $query->set( 'post_type', 'post' );
    }
}
add_action( 'pre_get_posts','SearchFilter' );

上記をfunctions.phpに記入すれば、大抵の場合、問題なく固定ページをサーチから除外できます。
色々方法があるのですが、参考にもあるように、色々とデバッグ済みのこのコードを書いておけば間違いないでしょう。

参考

https://www.imamura.biz/blog/10460

http://takayakondo.com/wordpress-search-2/

直接テンプレートに書く方法

//search.php
<?php
$paged = get_query_var('paged', 1);
$myposts = new WP_Query(array(
    'paged' => $paged,
    's' =>get_search_query(),
    'post_type' => 'post'
));
?>
<?php if($myposts->have_posts()):while($myposts->have_posts()):$myposts->the_post(); ?>
?>
~ループの内容~
<?php endwhile; endif; ?>

通常であれば、上記のように検索ページにわざわざ「$myposts」なんて作らなくてもいいのですが、同じテンプレート内で、違う条件で、複数の結果を表示させたい時(稀に存在する)などは上記のように「’post_type’ => ‘post’」を設定しておけば、固定ページを検索結果から除外できます。

コメント

コメントを送る

内容に問題がなければ「コメントを送信する」を押してください。(一度書いたコメントは取り消せません。)

検索

筆者:
プルン・プリン・プッチリーニ

通称:プッチ

沼の底(東京)でWEBディレクターをしながら生き抜いております。

このブログでは、そんな沼の底(東京)を照らす一筋の光になるれるような記事を目指して掲載していこうと思います。(WEB関係や社会問題など諸々)

TWITTER