
プラグインを使わない絞り込み機能【未選択時はすべて表示したい】
WordPressの検索機能について
チェックボックスに1つもチェックをいれなかったら
絞り込まずに全部表示。
「絞り込みの入力がなければその項目はすべて表示する」という扱いにする。
①まずは絞り込みフォームを作成します。
searchform.phpを作成し、検索フォームを書きます。
今回は「fruits」というタクソノミーから絞り込みたいと思います。
いたって普通のフォームです。
で表示させたい箇所に読み込ませてください。
②検索結果を表示
search.phpに記述します。
'fruits','terms'=>$s_fruits,'field'=>'slug','operator'=>'IN');}; query_posts( array( 'paged' => $paged , 'posts_per_page' => 12, 'post_type' =>'post', 's' => $s, 'tax_query' => array( $fruit_selected, 'relation' => 'AND' ) ) ); ?> get_title(); ?>
■!empty($s_fruits)
「$s_fruits」が空ではないとき=何かが選択されているときは、選択されている項目で絞り込みます。
ここでは、タクソノミーの条件ごと「$fruit_selected」にまとめて後で挿入します。(重要)
=空のとき(何も選択されていないとき)は $s_fruits は空のまま。
■query_posts( array(…
絞り込み条件をquery_postsで定義します。
先ほどの「$fruit_selected」を呼び出します。
1つ以上チェックがあった場合、「$fruit_selected」内の条件。
1つも選択されていない場合は「$fruit_selected」は空なので
「tax_query」へタクソノミーの指定はないということになります。
/* 間違い */ $s_fruits = $_GET['s_fruits']; query_posts( array( 'paged' => $paged , 'posts_per_page' => 12, 'post_type' =>'post', 's' => $s, 'tax_query' => array( array( 'taxonomy'=>'fruits', 'terms'=>$s_fruits, 'field'=>'slug', 'operator'=>'IN' ), 'relation' => 'AND' ) ) );
としてしまうと、何も選択されていないとき
タクソノミーの指定はしてあるのに、
「$s_fruits」に何も入っていないので
「fruitsのなかの’’」と一致。
=どの記事も引っかからないとなります。
重要なのは
絞り込み項目があるときは絞り込み内容を表示。
絞り込まれていないときは、そもそもタクソノミーすら指定しないという点でした。
1日うんうんうなってこうなったので
もっとスムーズな方法があればよろしくお願いします。
③何やらエラーができるとき
Warning: urlencode() expects parameter 1 to be string, array given in /home/xxx/wp-includes/formatting.php on line 4769
上記のようなエラーがでるときは、
検索フォーム内のname=”sample[]”のsampleの部分を変えたら動くことがあります。
おそらく何かと重複しちゃったのだと思います。
あとは、稼働中のサイトのソースの
変数名をこの場で変更したので、変数が一致しているかの確認をお願いします!
コメント
この記事へのトラックバックはありません。

Welcartのカテゴリー管理・新規登録ページをカスタマイズする
ECサイトをWordpressで運用するときに使われる『Welcart』というプラグイン。 私はこのプラグインが使いにくくて仕方がないです…

『WordPress importer』と『Search Regex』を使って画像ごと記事の引越しを行う
『WordPress importer』について WordPressからWordPressへ投稿記事の引越しに関して、WordPressは…
この記事へのコメントはありません。