質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

216閲覧

WordPressで投稿記事の絞込検索の仕組みを作っているのですが…

itokotoyo

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/03/27 01:06

実現したいこと

タクソノミーとキーワードによる絞込検索をカスタム投稿タイプの記事を対象に行い、検索結果を同ページ内に表示したい。

起きている問題

1.ラジオボタンでのタクソノミーの選択とキーワード検索による絞込検索の仕組みを構築しているのですが
検索結果の文章に取得したタームを入れたいのに、「検索結果がありません」が表示されてしまう。
2.タームを選択、キーワードの入力をして検索しても記事がヒットしない。

該当のソースコード

検索フォーム側のphp

php

1 <table class="jointdata_table_design"> 2 <tr> 3 <th></th> 4 <td><ul><li><label class="jointdata_radio"><input id="select_radio1" class="check" type="radio" class="shape_square" name="noselect" value="指定なし">指定なし</label></li></ul></td> 5 </tr> 6 <tr> 7 <th>特定課題研究<br class="sp_none"><br>カテゴリ1:<br class="sp_none">デジタルアースの技術要素の統合</th> 8 <td> 9 <?php $terms1 = get_terms( 'post_category_1', Array('hide_empty' => false)); 10 ?> 11 <?php if( $terms1 ): ?> 12 <ul> 13 <?php foreach( $terms1 as $term ): ?> 14 <li> 15 <label class="jointdata_radio"> 16 <input id="select_radio1" class="check" type="radio" class="shape_square" name="post_category_1" value="<?php echo esc_attr( $term->slug ); ?>"> 17 <?php echo esc_html( $term->name ); ?> 18 </label> 19 </li> 20 21 <?php endforeach; ?> 22 </ul> 23 <?php endif; ?> 24 </td> 25 </tr> 26 <tr> 27 <th>特定課題研究<br class="sp_none"><br>カテゴリ2:<br class="sp_none">問題複合体の具体的事例への取り組み</th> 28 <td> 29 <?php $terms2 = get_terms( 'post_category_2', Array('hide_empty' => false)); 30 ?> 31 <?php if( $terms2 ): ?> 32 <ul> 33 <?php foreach( $terms2 as $term ): ?> 34 <li> 35 <label class="jointdata_radio"> 36 <input type="radio" class="check" name="post_category_2" value="<?php echo esc_attr( $term->slug ); ?>"> 37 <?php echo esc_html( $term->name ); ?> 38 </label> 39 </li> 40 <?php endforeach; ?> 41 </ul> 42 <?php endif; ?> 43 </td> 44 </tr> 45 <tr> 46 <th>一般研究</th> 47 <td> 48 <?php $terms3 = get_terms( 'post_tag_a', Array('hide_empty' => false) ); ?> 49 <?php if( $terms3 ): ?> 50 <ul> 51 <?php foreach( $terms3 as $term ): ?> 52 <li id="sub-title"> 53 <label class="jointdata_radio"> 54 <input type="radio" class="check" name="post_tag_a" value="<?php echo esc_attr( $term->slug ); ?>"> 55 <?php echo esc_html( $term->name ); ?> 56 </label> 57 </li> 58 <?php endforeach; ?> 59 </ul> 60 <?php endif; ?> 61 </td> 62 </tr> 63 <tr> 64 <th>研究集会</th> 65 <td> 66 <?php $terms4 = get_terms( 'post_tag_b', Array('hide_empty' => false) ); ?> 67 <?php if( $terms4 ): ?> 68 <ul> 69 <?php foreach( $terms4 as $term ): ?> 70 <li id="sub-title"> 71 <label class="jointdata_radio"> 72 <input type="radio" class="check" name="post_tag_b" value="<?php echo esc_attr( $term->slug ); ?>"> 73 <?php echo esc_html( $term->name ); ?> 74 </label> 75 </li> 76 <?php endforeach; ?> 77 </ul> 78 <?php endif; ?> 79 </td> 80 </tr> 81 </table> 82 83 <p class="jointdata_search_title mt30">年度</p> 84 <label> 85 <div id="drop"> 86 <?php 87 $terms5 = $selected = get_query_var( "year_tag");//〇〇〇にはタクソノミー1のスラッグを指定 88 $args = array( 89 'show_option_all' => '指定なし',//一番最初に表示されているテキストを入力 90 'taxonomy' => 'year_tag',// 〇〇にはタクソノミー1のスラッグを指定 91 'name' => 'year_tag',//〇〇〇にはタクソノミー1のスラッグを指定 92 'value_field' => 'slug', 93 'hide_empty' => false, 94 'selected' => $terms5 95 ); 96 wp_dropdown_categories( $args ); 97 ?> 98 </div> 99 </label> 100 101 <div class="keyword_search mt30"> 102 <p class="jointdata_search_title">キーワード検索</p> 103 <input type="hidden" name="post_type" value="kenkyu_data"> 104 <input id="s-box" name="s" type="text" placeholder="キーワードを入力"/> 105 </div> 106 107 <div class="mt30 mb30 txtC"> 108 <input type="submit" value="検索する &#xf002;" class="black_btn subpage_button button fas fa-search"> 109 </div> 110 <div id="result" class="txtC">「検索」ボタンを押すとここに結果が表示されます。</div> 111 </form> 112 113 <script type="text/javascript"> 114 ~~ 115 </script> 116 </div> 117 </div> 118 </div> 119 </div> 120 </div>``` 121 122↓ここから結果表示側のphp 123 <?php 124if ( $_GET['noselect'] !== '' ) { 125 $noselect = $_GET['noselect']; 126 } else { 127 $noselect = ''; 128 } 129 130 if ( $_GET['post_category_1'] !== '' ) { 131 $post_category_1 = array( 132 'taxonomy' => 'post_category_1', 133 'field' => 'slug', 134 'terms' => $_GET['post_category_1'], 135 ); 136 } else { 137 $post_category_1 = ''; 138 } 139 140 if ( $_GET['post_category_2'] !== '' ) { 141 $post_category_2 = array( 142 'taxonomy' => 'post_category_2', 143 'field' => 'slug', 144 'terms' => $_GET['post_category_2'], 145 ); 146 } else { 147 $post_category_2 = ''; 148 } 149 150 if ( $_GET['post_tag_a'] !== '' ) { 151 $post_tag_a = array( 152 'taxonomy' => 'post_tag_a', 153 'field' => 'slug', 154 'terms' => $_GET['post_tag_a'], 155 ); 156 } else { 157 $post_tag_a = ''; 158 } 159 160 if ( $_GET['post_tag_b'] !== '' ) { 161 $post_tag_b = array( 162 'taxonomy' => 'post_tag_b', 163 'field' => 'slug', 164 'terms' => $_GET['post_tag_b'], 165 ); 166 } else { 167 $post_tag_b = ''; 168 } 169 170 if ( $_GET['year_tag'] !== '' ) { 171 $year_tag = array( 172 'taxonomy' => 'year_tag', 173 'field' => 'slug', 174 'terms' => $_GET['year_tag'], 175 ); 176 } else { 177 $year_tag = ''; 178 } 179 180 if ( $_GET['s'] !== '' ) { 181 $key = $_GET['s']; 182 } else { 183 $key = ''; 184 } 185 186 if ( !empty( $noselect ) || !empty( $post_category_1 ) || !empty( $post_category_2 ) || !empty( $post_tag_a ) || !empty( $post_tag_b ) || !empty( $year_tag ) || !empty( $key ) ) { 187 $args['tax_query'] = array( 188 'relation' => 'AND', // いわゆる「絞り込み」なら 'AND'、「複合検索」は 'OR' 189 $noselect, 190 $post_category_1, 191 $post_category_2, 192 $post_tag_a, 193 $post_tag_b, 194 $year_tag, 195 $key 196 ); 197 } 198 $the_query = new WP_Query( $args ); 199 200 if ( $the_query -> have_posts() ) : 201 if ( !empty( $noselect ) ) { 202 $term_name[] = $noselect; 203 } 204 205 if ( !empty( $post_category_1 ) ) { 206 $term_name[] = get_term_by( 'slug', $post_category_1['terms'], 'post_category_1' ) -> name; 207 } 208 209 if ( !empty( $post_category_2 ) ) { 210 $term_name[] = get_term_by( 'slug', $post_category_2['terms'], 'post_category_2' ) -> name; 211 } 212 213 if ( !empty( $post_tag_a ) ) { 214 $term_name[] = get_term_by( 'slug', $post_tag_a['terms'], 'post_tag_a' ) -> name; 215 } 216 217 if ( !empty( $post_tag_b ) ) { 218 $term_name[] = get_term_by( 'slug', $post_tag_b['terms'], 'post_tag_b' ) -> name; 219 } 220 if ( !empty( $year_tag ) ) { 221 $term_name[] = get_term_by( 'slug', $year_tag['terms'], 'year_tag' ) -> name; 222 } 223 if ( !empty( $key ) ) { 224 $term_name[] = $key; 225 } 226?> 227<?php 228 if ( !empty( $noselect ) || !empty( $post_category_1 ) || !empty( $post_category_2 ) || !empty( $post_tag_a ) || !empty( $post_tag_a ) || !empty( $year_tag ) || !empty( $key ) ) { 229 $term_names = implode( "、", $term_name ); 230 } 231 232 if ( $term_names ) : 233?> 234 <p><?php echo esc_attr( $term_names ); ?>」の検索結果</p> ?> 235 236 <?php else : ?> 237 <p>すべての検索結果</p> 238 <?php endif; ?> 239 240 <?php while( $the_query -> have_posts()): $the_query -> the_post(); ?> 241 <!-- 繰り返し処理する内容 --> 242 <a href="<?php the_permalink(); ?>" class="result_link"> 243 <div class="result_list flex flexW"> 244 <div class="result_day"> 245 <li> 246 <div> 247 <?php 248 // カスタムフィールドの取得 249 $sub_title = get_field('day_data'); 250 // カスタムフィールドの出力 251 if($sub_title) {echo '<div>' .$sub_title .'</div>';} 252 ?> 253 </div> 254 </li> 255 </div> 256 <div class="result_title"> 257 <li> 258 <div class="page-title"> 259 <!-- ページタイトル --> 260 <?php echo get_the_title(); ?> 261 <!-- サブタイトル --> 262 </div> 263 </li> 264 </div> 265 </div> 266 </a> 267 <?php endwhile; wp_reset_postdata(); 268 else : 269 ?> 270 271 検索結果はありません。 272 <?php endif; ?> 273 274### 補足 2752.に関してはテストサーバーではヒットしてますが、本番サーバーではうまくいきません。 276 277何分あまりphpに詳しくなく、いろいろ検索して出てきたものを切り貼りして作っているため 278いろいろとおかしなところがあるかと思いますが、解決のヒントが見つかればと思い質問させていただきました。 279何卒宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問