検索
カスタムフィールドをサイト内検索の対象にする「Search Everything」[WordPress]
絞り込み(検討中のコード)
うーん、色いろあるみたいだ
https://ja.forums.wordpress.org/topic/23237
絞り込み(暫定のコード)
暫定ではこんな感じになってますー。
でも上に書いた(検討中のコード)で全部できるならそれでええやんってかんじですね。。
ちなみにここにいたるまでの古いコードは下の方に書いてますがあくまで参考までに。
function.php
//検索クエリのカスタマイズ(全体のものと店舗のもの)
function customize_main_query($query) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_search() && $query->is_post_type_archive('products')) {
$s = $_GET['s'];
$area = $_GET['area'];
$low = $_GET['low'];
$post_tag = $_GET['post_tag'];
$hideClosed = $_GET['hideClosed'];
if($post_tag){
$taxquerysp[] = array(
'taxonomy'=>'post_tag',
'terms'=> $post_tag,
'include_children'=>false,
'field'=>'slug',
'operator'=>'AND'
);
}
if($area){
$taxquerysp[] = array(
'taxonomy'=>'area',
'terms'=> $area,
'include_children'=>false,
'field'=>'slug',
'operator'=>'AND'
);
}
$taxquerysp['relation'] = 'AND';
if($hideClosed){
$metaquerysp[] = array(
'key'=>'shop_outOfBusiness',
'value'=> '0'
);
}
if($low){
$metaquerysp[] = array(
'key'=>'shop_openingday',
'value'=>array( $low, date("Ymd", strtotime("$low 10 year")) ),
'compare'=>'BETWEEN',
'type'=>'DATE',
);
$metaquerysp['relation'] = 'AND';
}
$query->set('tax_query' , $taxquerysp);
$query->set('meta_query' , $metaquerysp);
$query->set('s' , $s);
}
}
add_action( 'pre_get_posts', 'customize_main_query' );
上記の絞り込みコードにいたったわけ
絞り込み検索をプラグインを使わずに実装[WordPress]
↑がめっちゃよくまとまっていたので、ゴニョゴニョしながらカスタムしていたのですが、
最後にクエリを渡すところでつかってるquery postsについてなにげに公式で検索したら、あんまり使うなよ!押すな押すなよ!重くなるぞ!!って書いてあるヒーーーー!
テンプレートタグ/query posts – WordPress Codex 日本語版
http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/query_posts
で、かわりにpre get postsとか使いなさいよあーた!と書いてある。
プラグイン API/アクションフック一覧/pre get posts – WordPress Codex 日本語版
http://wpdocs.sourceforge.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/pre_get_posts
中盤にあるパプリカみたいな色合いのフロー図をみると、うむ。たしかに効率の悪そうなフローになっとるな。うーん、重くなるのはやだな。ちょっときちんと調べて自作しよーと。
というわけでそもそも何なのってのを解りやすく解説してるページを探す
なにもしらない子羊ちゃんなので。メーメー。
「wp query query posts 違い」
hijiriworld Web
http://hijiriworld.com/web/wordpress-loop/
query_postsとget_postsの違い[追記あり] | notnil creation weblog
http://notnil-creative.com/blog/archives/1384
ふーん。なんか知らんがメインで設定されているクエリをむりくり上書きするのね?
で、きた。本題。っておもったらcodex訳してくれてる人だった。ありがたやありがたや。
そのものスバリの記事があった。
query_postsを捨てよ、pre_get_postsを使おう【追記あり】【報告あり】 | notnil creation weblog
http://notnil-creative.com/blog/archives/1688
で、なにをどうかきかえんねん。めんどいんかな、いやだな、っておもったら結構さくっとできた。
「query_posts」を「WP_Query」「pre_get_posts」に書き換える方法 | 株式会社まちいろ 〜 街に真心と感動を増やすIT企業
http://www.machiiro.jp/machiblog/blog/query_posts/
おお、さくっとできそうだ。しかも対応が必要なページが増えても、記述変えるだけでよいので、べんりね。
というわけでした。
総合と下層でテンプレートを変更する場合
WordPress › フォーラム » 検索結果ページを振り分けたい
https://ja.forums.wordpress.org/topic/13350
コメントを残す