質問編集履歴

2

コードを修正しました

2020/11/13 03:59

投稿

iambeginnerr
iambeginnerr

スコア12

test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  ```
44
44
 
45
- <form action="<?php echo get_post_type_archive_link('school'); ?>" method="get">
45
+ <form action="<?php echo get_post_type_archive_link('restaurant'); ?>" method="get">
46
46
 
47
47
 
48
48
 

1

コードを追加しました

2020/11/13 03:59

投稿

iambeginnerr
iambeginnerr

スコア12

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,10 @@
42
42
 
43
43
  ```
44
44
 
45
+ <form action="<?php echo get_post_type_archive_link('school'); ?>" method="get">
46
+
47
+
48
+
45
49
  <h3>エリアを選択(市町村一覧を表示しています)</h3>
46
50
 
47
51
  エリアを選択(市町村一覧を表示しています)
@@ -68,6 +72,8 @@
68
72
 
69
73
  ?>
70
74
 
75
+
76
+
71
77
  <h3>ジャンルを選択</h3>
72
78
 
73
79
  <!-- 一括で出力する方法が分からず親タームごとに表示させました。もっとスマートな書き方があると思うのですが...-->
@@ -124,6 +130,14 @@
124
130
 
125
131
  </ul>
126
132
 
133
+
134
+
135
+ <input type="submit" value="検索">
136
+
137
+ </form>
138
+
139
+
140
+
127
141
  ```
128
142
 
129
143
 
@@ -168,13 +182,141 @@
168
182
 
169
183
  ```
170
184
 
185
+
186
+
187
+ search.php
188
+
189
+ (他の方の過去の質問を参考にし、見よう見まねで入力してみました)
190
+
191
+ ```
192
+
193
+ <?php
194
+
195
+ $s = $_GET['s'];
196
+
197
+ $area = $_GET['area_cat'];
198
+
199
+ $area_type = $_GET['area_cat'];
200
+
201
+ $genre = $_GET['genre_cat'];
202
+
203
+
204
+
205
+ if($area){
206
+
207
+ $taxquerysp[] = array(
208
+
209
+ 'taxonomy'=> $area_cat,
210
+
211
+ 'terms'=> $area,
212
+
213
+ 'field'=>'slug',
214
+
215
+ 'operator'=>'AND'
216
+
217
+ );
218
+
219
+ }
220
+
221
+ // 以下追記のソースです。
222
+
223
+ // ターム情報がない場合は指定のタクソノミーに属するターム全てで検索
224
+
225
+ else {
226
+
227
+ // ターム一覧を取得しスラッグ名を配列に格納
228
+
229
+ $term_objs = get_terms($area_type);
230
+
231
+ $terms = array();
232
+
233
+ foreach($term_objs as $term){
234
+
235
+ $terms[] = $term->slug;
236
+
237
+ }
238
+
239
+ // 取得したターム一覧をqueryの条件に
240
+
241
+ $taxquerysp[] = array(
242
+
243
+ 'taxonomy' => 'area_cat',
244
+
245
+ 'field' => 'slug',
246
+
247
+ 'terms' => $terms,
248
+
249
+ 'operator' => 'IN',
250
+
251
+ );
252
+
253
+ }
254
+
255
+ if($genre){
256
+
257
+ $taxquerysp[] = array(
258
+
259
+ 'taxonomy'=>'genre_cat',
260
+
261
+ 'terms'=> $genre,
262
+
263
+ 'field'=>'slug',
264
+
265
+ 'operator'=>'AND'
266
+
267
+ );
268
+
269
+ }
270
+
271
+ $taxquerysp['relation'] = 'AND';
272
+
273
+
274
+
275
+ ?>
276
+
277
+
278
+
279
+ <?php query_posts( array(
280
+
281
+ 'post_type' => 'custom_post',
282
+
283
+ 'tax_query' => $taxquerysp,
284
+
285
+ 's' => $s,
286
+
287
+ )
288
+
289
+ );?>
290
+
291
+
292
+
293
+ <ul id="item_list">
294
+
295
+ <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
296
+
297
+ <?php get_template_part('loop-item_list'); ?>
298
+
299
+ <?php endwhile; else : ?>
300
+
301
+
302
+
303
+ <li>該当なし</li>
304
+
305
+
306
+
307
+ <?php endif;wp_reset_query(); ?>
308
+
309
+ </ul>
310
+
311
+
312
+
313
+ ```
314
+
171
315
  ### 試したこと
172
316
 
173
317
 
174
318
 
175
- 調べてみても同じ状況なかなかつけられず実現するとがきないでいます。
319
+ search.phpへ新たな記載をしてみたのですよう見まねでしてのような道筋合ってるのかも疑問です。
176
-
177
-
178
320
 
179
321
  どうか皆様の知恵をお貸しください。
180
322