お世話になります。
【Xeory base】というテーマで子テーマを作成し、
検索フォーム(searchform.php)をカスタマイズし、
フリーテキスト以外にもカテゴリ&タグも検索条件に含めたいと思い、
https://www.akaeho.net/wp-searchform/
を参考に検索フォーム自体は作成する事が出来ました。
検索フォーム(searchform.php)のコード
php
1<form method="get" action="<?php echo home_url('/'); ?>" > 2<?php wp_dropdown_categories('show_option_none=カテゴリを選択'); ?> 3 <?php $tags = get_tags(); if ( $tags ) : ?> 4 <select name="tag"> 5 <option value="" class="selected">タグを選択</option> 6 <?php foreach ( $tags as $tag ): ?> 7 <option value="<?php echo esc_html( $tag->slug); ?>"><?php echo esc_html( $tag->name ); ?></option> 8 <?php endforeach; ?> 9 </select> 10 <?php endif; ?> 11 <input name="s" id="s" type="text" placeholder="キーワードを入力"> 12 <input id="submit" type="submit" value="検索"> 13 <input id="reset" type="reset" value="リセット"> 14</form>
上記コードでそれぞれ選択or入力して検索すると、パラメーターが
https://●●●●●.com/?cat=カテゴリID&tag=タグ名&s=キーワード名
として表示されます。
これがhttps://●●●●●.com/?cat=カテゴリID
など、どれか一つだけですと正常に検索結果ページで一覧表示されるのですが、
タグとキーワードが未選択or未入力の場合、パラメーターが
https://●●●●●.com/?cat=カテゴリID&tag=&s=
となり、検索結果ページで該当無しとなってしまいます。
検索条件に未選択or未入力がある場合、
それらをパラメーターに含まない、または含んだ場合も
選択した条件のみで検索結果に反映させたいのです。
参考になりそうなページを探しているのですが見つからず、
このままだと、リダイレクトしか無いかなと考えておりますが、
何か良い方法をご存知の方がいれば、
ご教授頂けますと幸いです。
なお、検索結果ページのコードは以下になります。
検索結果 (search.php)のコード(デフォルトのままです)
php
1<?php get_header(); ?> 2 3<div id="content"> 4 5<div class="wrap"> 6 <?php bzb_breadcrumb(); ?> 7 8 <div id="main" <?php bzb_layout_main(); ?>> 9 10 <div class="main-inner"> 11 12 <section class="cat-content"> 13 <header class="cat-header"> 14 <h1 class="post-title"><?php bzb_title(); ?></h1> 15 </header> 16 <?php if( is_category() ) { ?> 17 <?php bzb_category_description(); ?> 18 <?php } ?> 19 20 </section> 21 22 <div class="post-loop-wrap"> 23 <?php 24 25 if ( have_posts() ) : 26 27 while ( have_posts() ) : the_post(); 28 29 ?> 30 31<article id="post-<?php echo the_ID(); ?>" <?php post_class(); ?> itemscope="itemscope" itemtype="http://schema.org/BlogPosting"> 32 33 <header class="post-header"> 34 <ul class="post-meta list-inline"> 35 <li class="date updated" itemprop="datePublished" datetime="<?php the_time('c');?>"><i class="fa fa-clock-o"></i> <?php the_time('Y.m.d');?></li> 36 </ul> 37 <h2 class="post-title" itemprop="headline"><?php the_title(); ?></h2> 38 </header> 39 40 <section class="post-content" itemprop="text"> 41 <div id="sponsor_url"><?php $text_field = get_field('sponsor_url'); ?><a href="<?php echo $text_field; ?>" target="_blank"><?php echo $text_field; ?></a></div> 42 </section> 43 44 </article> 45 <?php 46 47 endwhile; 48 49 else : 50 ?> 51 52 <article id="post-404"class="cotent-none post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting"> 53 <section class="post-content" itemprop="text"> 54 <?php echo get_template_part('content', 'none'); ?> 55 </section> 56 </article> 57 58 <?php 59 endif; 60 ?> 61 <?php if (function_exists("pagination")) { 62 pagination($wp_query->max_num_pages); 63 } ?> 64 </div><!-- /post-loop-wrap --> 65 </div><!-- /main-inner --> 66 </div><!-- /main --> 67 68<?php get_sidebar(); ?> 69 70</div><!-- /wrap --> 71 72</div><!-- /content --> 73 74<?php get_footer(); ?>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/11 08:50
2020/04/11 12:13
2024/05/09 08:03