【WordPress】固定ページをサーチさせない方法。functions.phpに書く方法と各テンプレートに直接書く方法
2017年05月1日(UPDATE:2017年09月10日)
TIPS | functions , wordpress , サーチ , 固定ページ , 検索
固定ページをサーチさせない方法で、ほとんどの場合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’」を設定しておけば、固定ページを検索結果から除外できます。
コメント
コメントを送る
検索
筆者:
puc(ぷく)
WEBディレクター/エンジニアとして働きながら、副業でFXをしています。
FXは専業とまでは行っていないのですが、3年間やり続け、ようやく安定してプラスを出せるようになりました。
このブログでは、FXをメインに、沼底を照らせる一筋の光になるような記事を提供できればと思っています。
Now how the release is complete, we should submit it to various submission solutions.
At the end, they do not get a desired result and achieve nothing.
Experimentation is part of carpet. http://www.loversdh.com/use-of-natural-ingredients-can-increase-your-sex-drive/