目次
こんにちは、後藤です。
前回、WordPressのサイト内検索機能の追加方法を紹介しました。
今回は、さらにカテゴリーなどで絞り込む方法を紹介します。
投稿カテゴリーをドロップダウンリストから絞り込む
投稿カテゴリーをドロップダウンリストから1つ選択して絞り込む方法です。
検索フォーム
1 2 3 4 5 |
<form method="get" action="<?php echo home_url('/'); ?>" > <input type="text" name="s" id="s" placeholder="キーワードで検索"/> <?php wp_dropdown_categories(); ?> <button type="submit">検索する</button> </form> |
ポイントは、wp_dropdown_categoriesで投稿カテゴリーのドロップダウンリストを表示しているところです。
検索結果ページはそのままでOKです。
投稿カテゴリーをチェックボックスで選択して絞り込む
投稿カテゴリーを複数選択することができます。
検索フォーム
1 2 3 4 5 6 7 8 9 10 |
<form method="get" action="<?php echo home_url('/'); ?>" > <input type="text" name="s" id="s" placeholder="キーワードで検索"/><br> <?php $cats = get_categories(); foreach($cats as $cat) : ?> <input type="checkbox" name="cat[]" value="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?><br> <?php endforeach; ?> <button type="submit">検索する</button> </form> |
get_categoriesでカテゴリーリストを取得してforeachでチェックボックスを出力しています。
チェックボックスのname属性に[]を付けることで配列にしています。
検索結果ページ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php global $wp_query; $total_results = $wp_query->found_posts;//該当件数 $search_query = get_search_query();//検索キーワード $cat = $_GET['cat'];//選択カテゴリーを取得 ?> <h1> カテゴリ:<?php foreach($cat as $val) { echo get_cat_name($val).'、'; } ?> <?php echo $search_query; ?>の検索結果(<?php echo $total_results; ?>件) </h1> <?php $taxquery = array (array( 'taxonomy'=>'category', 'terms'=> $cat, 'include_children'=>false, 'field'=>'term_id', 'operator'=>'IN' )); query_posts( array( 'tax_query' => $taxquery, 'posts_per_page' => -1, )); if( $total_results > 0 ): if(have_posts()): ?> <ul> <?php while(have_posts()): the_post(); ?> <li> <a href="<?php the_permalink(); ?>"> <h2><?php the_title(); ?></h2> <p><?php the_excerpt(); ?></p> </a> </li> <?php endwhile; ?> </ul> <?php endif; ?> <?php else: //該当なしの場合 ?> <h2><?php echo $search_query; ?> に一致する情報は見つかりませんでした。</h2> <?php endif; ?> |
検索フォームのチェックボックスのvalue値をカテゴリーIDにしているので、カテゴリーIDで絞り込んでいます。
include_childrenで子カテゴリーを含むかどうかを選択できます。
operatorで絞り込み方を選択できます。
INでどれかが該当する投稿、ANDですべて該当する投稿、NOT INで該当しない投稿の絞り込みができます。
posts_per_pageで表示する件数を指定できます。
-1ですべて表示します。
まとめ
今回は前回紹介した検索の発展形で、カテゴリーを使った検索方法を紹介しました。ワードプレスにはたくさんの関数があり、それらを使うことによって、簡単に希望の機能を作成できます。記事の検索やカスタム投稿での検索など、お客さんの要望で入れることも多いので、とても有用に感じています。