沼底FXブログ
FXの沼底から這い上がるための、希望の光を照らすブログ。FX/経済/ぜんぜん関係ないことをつらつらと。

【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’」を設定しておけば、固定ページを検索結果から除外できます。

コメント

g&b candy へ返信する コメントをキャンセル

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

検索

筆者:
puc(ぷく)

TWITTER YOUTUBE

WEBディレクター/エンジニアとして働きながら、副業でFXをしています。

FXは専業とまでは行っていないのですが、3年間やり続け、ようやく安定してプラスを出せるようになりました。

このブログでは、FXをメインに、沼底を照らせる一筋の光になるような記事を提供できればと思っています。