今回はワードプレスのsearch.phpをカスタマイズしてみます。
カテゴリーとタグのみで検索できる仕組みを作ってみました。今回はテキスト文字検索はなしです。
カテゴリーとタグのみの検索でプルダウンメニューにしてあります。
テキストは空で渡すようにしてhiddenにしてあります。
本来ワードプレスの検索テキストフィールドは必須なのですが空で渡しております。
search.phpでも表示できるようにfunctions.phpにもちょこちょこ書き足します。
スポンサーリンク
search.phpもしくは他ページから
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 | <form method="get" action="<?php bloginfo( 'url' ); ?>"> <p><label>タグ:</label> <?php $tags = get_tags(); if ($tags) : ?> <select name='tag' id='tag'> <option value="">▼タグ選択</option> <?php foreach ($tags as $tag): ?> <?php if(esc_html($tag->slug) === $_GET['tag']) :?> <option value="<?php echo esc_html($tag->slug);?>" selected="selected"><?php echo esc_html($tag->name); ?>(<?php echo $tag->count;?>)</option> <?php else:?> <option value="<?php echo esc_html($tag->slug);?>"><?php echo esc_html($tag->name); ?>(<?php echo $tag->count;?>)</option> <?php endif;?> <?php endforeach; ?> </select> <?php endif; ?> </p> <p><label>カテゴリ:</label> <?php wp_dropdown_categories('show_count=1&orderby=name&&show_option_none=▼カテゴリ選択'); ?> </p> <input type="hidden" value="" name="s" /> <p><input id="submit" type="submit" value=" 検 索 "></p> </form> <p>検索結果:<?php echo $wp_query->found_posts; ?>件</p> <?php if (have_posts()) :?> <?php while(have_posts()) : the_post(); ?> <h3><?php the_title(); ?></h3> <div class="entry"> <?php the_content() ; ?> </div> |
search.phpは上記みたいな感じにしてfunctions.phpに条件を書き足します。
functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //投稿記事のみを検索対象 function SearchFilter($query) { if ($query->is_search) { $query->set('post_type', 'post'); // ページを含める場合 //$query->set('post_type', array('post', 'page')); // 特定カテゴリーを除外 //$query->set('post_type', 'post'); //$query->set('category__not_in', array(1,2)); } return $query; } add_filter('pre_get_posts','SearchFilter'); // 検索フォームがなくてもseach.phpへ表示 function custom_search($search, $wp_query ) { //query['s']があったら検索ページ表示 if (isset($wp_query->query['s'])) { $wp_query->is_search = true; } return $search; } add_filter('posts_search','custom_search', 10, 2); |
以上で完了!!こんな感じでプルダウンだけの検索が実装完了です!!