質問編集履歴
11
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -497,3 +497,19 @@
|
|
497
497
|
<?php endif; ?>
|
498
498
|
|
499
499
|
```
|
500
|
+
|
501
|
+
|
502
|
+
|
503
|
+
### ※追記5
|
504
|
+
|
505
|
+
WordPressフォーラムにて、プラグインのご紹介をしていただきました。
|
506
|
+
|
507
|
+
「Search & Filter」`https://ja.wordpress.org/plugins/search-filter/`
|
508
|
+
|
509
|
+
ドキュメント:`http://docs.designsandcode.com/search-filter/`
|
510
|
+
|
511
|
+
かなり私がやりたいことに近いです。
|
512
|
+
|
513
|
+
ですが、少しプラグイン無しにこだわっているところがあるので
|
514
|
+
|
515
|
+
解決しなければ、こちらのプラグインを使おうかと思います。
|
10
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -238,7 +238,7 @@
|
|
238
238
|
|
239
239
|
WordPressフォーラム先で、下記の参考サイトを紹介して頂き、
|
240
240
|
|
241
|
-
https://illustswitch.com/wordpress-search-filter/
|
241
|
+
`https://illustswitch.com/wordpress-search-filter/`
|
242
242
|
|
243
243
|
|
244
244
|
|
@@ -264,6 +264,142 @@
|
|
264
264
|
|
265
265
|
```PHP
|
266
266
|
|
267
|
+
39 <h1>検索結果</h1>
|
268
|
+
|
269
|
+
40 <?php
|
270
|
+
|
271
|
+
41 if(is_array($get_cats)) {
|
272
|
+
|
273
|
+
42 echo '<p>カテゴリー:';
|
274
|
+
|
275
|
+
43 foreach ($get_cats as $val) {
|
276
|
+
|
277
|
+
44 $p_term = get_term_by('slug', $val, 'products_cat_brand');
|
278
|
+
|
279
|
+
45 echo $p_term->name;
|
280
|
+
|
281
|
+
46 if ($val !== end($get_cats)) {
|
282
|
+
|
283
|
+
47 echo ', ';
|
284
|
+
|
285
|
+
48 }
|
286
|
+
|
287
|
+
49 }
|
288
|
+
|
289
|
+
50 echo '</p>';
|
290
|
+
|
291
|
+
51 } ?>
|
292
|
+
|
293
|
+
```
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
ご紹介していただいたサイトを元に、作成してみたコードを下に記載しておきますので、
|
298
|
+
|
299
|
+
ご教示のほど、よろしくお願いいたします。
|
300
|
+
|
301
|
+
### searchform.php
|
302
|
+
|
303
|
+
```PHP
|
304
|
+
|
305
|
+
<form role="search" method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>products/">
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
<h2>カテゴリー</h2>
|
310
|
+
|
311
|
+
<?php
|
312
|
+
|
313
|
+
$taxonomies_args = array(
|
314
|
+
|
315
|
+
'orderby' => 'name',
|
316
|
+
|
317
|
+
'order' => 'ASC',
|
318
|
+
|
319
|
+
);
|
320
|
+
|
321
|
+
$taxonomies = get_terms( 'products_cat_brand', $taxonomies_args );
|
322
|
+
|
323
|
+
foreach($taxonomies as $taxonomies) :
|
324
|
+
|
325
|
+
?>
|
326
|
+
|
327
|
+
<label><input type="checkbox" name="get_cats[]" value="<?php echo $taxonomies->slug; ?>"><?php echo $taxonomies->name; ?></label>
|
328
|
+
|
329
|
+
<?php endforeach; ?>
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
<h2><?php _x( 'Search for:', 'label' ); ?>キーワード</h2>
|
334
|
+
|
335
|
+
<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="キーワードを入力してください" />
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
<input type="submit" value="検索" />
|
340
|
+
|
341
|
+
</form>
|
342
|
+
|
343
|
+
```
|
344
|
+
|
345
|
+
### search.php
|
346
|
+
|
347
|
+
```PHP
|
348
|
+
|
349
|
+
<?php
|
350
|
+
|
351
|
+
$s = $_GET['s'];
|
352
|
+
|
353
|
+
$get_cats = $_GET['get_cats'];
|
354
|
+
|
355
|
+
$get_tags = $_GET['get_tags'];
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
if($get_cats) {
|
360
|
+
|
361
|
+
$tax_ary[] = array(
|
362
|
+
|
363
|
+
'taxonomy' => 'products_cat_brand',
|
364
|
+
|
365
|
+
'field' => 'slug',
|
366
|
+
|
367
|
+
'terms' => $get_cats,
|
368
|
+
|
369
|
+
'operator' => 'IN', //ANDかIN
|
370
|
+
|
371
|
+
);
|
372
|
+
|
373
|
+
}
|
374
|
+
|
375
|
+
if($get_tags) {
|
376
|
+
|
377
|
+
$tax_ary[] = array(
|
378
|
+
|
379
|
+
'taxonomy' => 'products_cat_brand',
|
380
|
+
|
381
|
+
'field' => 'slug',
|
382
|
+
|
383
|
+
'terms' => $get_tags,
|
384
|
+
|
385
|
+
'operator' => 'IN', //ANDかIN
|
386
|
+
|
387
|
+
);
|
388
|
+
|
389
|
+
}
|
390
|
+
|
391
|
+
?>
|
392
|
+
|
393
|
+
<?php if (!($s || $get_cats || $get_tags)): ?>
|
394
|
+
|
395
|
+
<p>検索条件を指定してください</p>
|
396
|
+
|
397
|
+
<?php get_search_form(); ?>
|
398
|
+
|
399
|
+
<?php else: ?>
|
400
|
+
|
401
|
+
|
402
|
+
|
267
403
|
<h1>検索結果</h1>
|
268
404
|
|
269
405
|
<?php
|
@@ -290,210 +426,74 @@
|
|
290
426
|
|
291
427
|
} ?>
|
292
428
|
|
429
|
+
<?php
|
430
|
+
|
431
|
+
if(is_array($get_tags)) {
|
432
|
+
|
433
|
+
echo '<p>タグ:';
|
434
|
+
|
435
|
+
foreach ($get_tags as $val) {
|
436
|
+
|
437
|
+
$s_term = get_term_by('slug', $val, 'products_cat_brand');
|
438
|
+
|
439
|
+
echo $s_term->name;
|
440
|
+
|
441
|
+
if ($val !== end($get_tags)) {
|
442
|
+
|
443
|
+
echo ', ';
|
444
|
+
|
445
|
+
}
|
446
|
+
|
447
|
+
}
|
448
|
+
|
449
|
+
echo '</p>';
|
450
|
+
|
451
|
+
} ?>
|
452
|
+
|
453
|
+
<?php
|
454
|
+
|
455
|
+
if($s) { echo '<p>キーワード:'.$s.'</p>'; } ?>
|
456
|
+
|
457
|
+
|
458
|
+
|
459
|
+
<?php
|
460
|
+
|
461
|
+
$my_query = new WP_Query( array(
|
462
|
+
|
463
|
+
'paged' => get_query_var('paged'),
|
464
|
+
|
465
|
+
'post_type' => 'post',
|
466
|
+
|
467
|
+
'tax_query' => $tax_ary,
|
468
|
+
|
469
|
+
'relation' => 'AND', //ANDかOR
|
470
|
+
|
471
|
+
's' => $s,
|
472
|
+
|
473
|
+
)); ?>
|
474
|
+
|
475
|
+
<?php if($my_query->have_posts() ) : ?>
|
476
|
+
|
477
|
+
<ul>
|
478
|
+
|
479
|
+
<?php while( $my_query->have_posts()) : $my_query->the_post(); ?>
|
480
|
+
|
481
|
+
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
|
482
|
+
|
483
|
+
</li>
|
484
|
+
|
485
|
+
<?php endwhile; ?>
|
486
|
+
|
487
|
+
</ul>
|
488
|
+
|
489
|
+
<?php else: ?>
|
490
|
+
|
491
|
+
<p>結果が見つかりませんでした。</p>
|
492
|
+
|
493
|
+
<?php endif; ?>
|
494
|
+
|
495
|
+
<?php get_search_form(); ?>
|
496
|
+
|
497
|
+
<?php endif; ?>
|
498
|
+
|
293
499
|
```
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
ご紹介していただいたサイトを元に、作成してみたコードを下に記載しておきますので、
|
298
|
-
|
299
|
-
ご教示のほど、よろしくお願いいたします。
|
300
|
-
|
301
|
-
### searchform.php
|
302
|
-
|
303
|
-
```PHP
|
304
|
-
|
305
|
-
<form role="search" method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>products/">
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
<h2>カテゴリー</h2>
|
310
|
-
|
311
|
-
<?php
|
312
|
-
|
313
|
-
$taxonomies_args = array(
|
314
|
-
|
315
|
-
'orderby' => 'name',
|
316
|
-
|
317
|
-
'order' => 'ASC',
|
318
|
-
|
319
|
-
);
|
320
|
-
|
321
|
-
$taxonomies = get_terms( 'products_cat_brand', $taxonomies_args );
|
322
|
-
|
323
|
-
foreach($taxonomies as $taxonomies) :
|
324
|
-
|
325
|
-
?>
|
326
|
-
|
327
|
-
<label><input type="checkbox" name="get_cats[]" value="<?php echo $taxonomies->slug; ?>"><?php echo $taxonomies->name; ?></label>
|
328
|
-
|
329
|
-
<?php endforeach; ?>
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
<h2><?php _x( 'Search for:', 'label' ); ?>キーワード</h2>
|
334
|
-
|
335
|
-
<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="キーワードを入力してください" />
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
<input type="submit" value="検索" />
|
340
|
-
|
341
|
-
</form>
|
342
|
-
|
343
|
-
```
|
344
|
-
|
345
|
-
### search.php
|
346
|
-
|
347
|
-
```PHP
|
348
|
-
|
349
|
-
<?php
|
350
|
-
|
351
|
-
$s = $_GET['s'];
|
352
|
-
|
353
|
-
$get_cats = $_GET['get_cats'];
|
354
|
-
|
355
|
-
$get_tags = $_GET['get_tags'];
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
if($get_cats) {
|
360
|
-
|
361
|
-
$tax_ary[] = array(
|
362
|
-
|
363
|
-
'taxonomy' => 'products_cat_brand',
|
364
|
-
|
365
|
-
'field' => 'slug',
|
366
|
-
|
367
|
-
'terms' => $get_cats,
|
368
|
-
|
369
|
-
'operator' => 'IN', //ANDかIN
|
370
|
-
|
371
|
-
);
|
372
|
-
|
373
|
-
}
|
374
|
-
|
375
|
-
if($get_tags) {
|
376
|
-
|
377
|
-
$tax_ary[] = array(
|
378
|
-
|
379
|
-
'taxonomy' => 'products_cat_brand',
|
380
|
-
|
381
|
-
'field' => 'slug',
|
382
|
-
|
383
|
-
'terms' => $get_tags,
|
384
|
-
|
385
|
-
'operator' => 'IN', //ANDかIN
|
386
|
-
|
387
|
-
);
|
388
|
-
|
389
|
-
}
|
390
|
-
|
391
|
-
?>
|
392
|
-
|
393
|
-
<?php if (!($s || $get_cats || $get_tags)): ?>
|
394
|
-
|
395
|
-
<p>検索条件を指定してください</p>
|
396
|
-
|
397
|
-
<?php get_search_form(); ?>
|
398
|
-
|
399
|
-
<?php else: ?>
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
<h1>検索結果</h1>
|
404
|
-
|
405
|
-
<?php
|
406
|
-
|
407
|
-
if(is_array($get_cats)) {
|
408
|
-
|
409
|
-
echo '<p>カテゴリー:';
|
410
|
-
|
411
|
-
foreach ($get_cats as $val) {
|
412
|
-
|
413
|
-
$p_term = get_term_by('slug', $val, 'products_cat_brand');
|
414
|
-
|
415
|
-
echo $p_term->name;
|
416
|
-
|
417
|
-
if ($val !== end($get_cats)) {
|
418
|
-
|
419
|
-
echo ', ';
|
420
|
-
|
421
|
-
}
|
422
|
-
|
423
|
-
}
|
424
|
-
|
425
|
-
echo '</p>';
|
426
|
-
|
427
|
-
} ?>
|
428
|
-
|
429
|
-
<?php
|
430
|
-
|
431
|
-
if(is_array($get_tags)) {
|
432
|
-
|
433
|
-
echo '<p>タグ:';
|
434
|
-
|
435
|
-
foreach ($get_tags as $val) {
|
436
|
-
|
437
|
-
$s_term = get_term_by('slug', $val, 'products_cat_brand');
|
438
|
-
|
439
|
-
echo $s_term->name;
|
440
|
-
|
441
|
-
if ($val !== end($get_tags)) {
|
442
|
-
|
443
|
-
echo ', ';
|
444
|
-
|
445
|
-
}
|
446
|
-
|
447
|
-
}
|
448
|
-
|
449
|
-
echo '</p>';
|
450
|
-
|
451
|
-
} ?>
|
452
|
-
|
453
|
-
<?php
|
454
|
-
|
455
|
-
if($s) { echo '<p>キーワード:'.$s.'</p>'; } ?>
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
<?php
|
460
|
-
|
461
|
-
$my_query = new WP_Query( array(
|
462
|
-
|
463
|
-
'paged' => get_query_var('paged'),
|
464
|
-
|
465
|
-
'post_type' => 'post',
|
466
|
-
|
467
|
-
'tax_query' => $tax_ary,
|
468
|
-
|
469
|
-
'relation' => 'AND', //ANDかOR
|
470
|
-
|
471
|
-
's' => $s,
|
472
|
-
|
473
|
-
)); ?>
|
474
|
-
|
475
|
-
<?php if($my_query->have_posts() ) : ?>
|
476
|
-
|
477
|
-
<ul>
|
478
|
-
|
479
|
-
<?php while( $my_query->have_posts()) : $my_query->the_post(); ?>
|
480
|
-
|
481
|
-
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
|
482
|
-
|
483
|
-
</li>
|
484
|
-
|
485
|
-
<?php endwhile; ?>
|
486
|
-
|
487
|
-
</ul>
|
488
|
-
|
489
|
-
<?php else: ?>
|
490
|
-
|
491
|
-
<p>結果が見つかりませんでした。</p>
|
492
|
-
|
493
|
-
<?php endif; ?>
|
494
|
-
|
495
|
-
<?php get_search_form(); ?>
|
496
|
-
|
497
|
-
<?php endif; ?>
|
498
|
-
|
499
|
-
```
|
9
hennsyuu
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
https://kotori-blog.com/wordpress/refinement_search/#refinement6_1
|
5
|
+
`https://kotori-blog.com/wordpress/refinement_search/#refinement6_1`
|
6
6
|
|
7
7
|
こちらの記事を参考に、ターム絞り込み検索を実装しました。
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
検索結果ページ(search.php)を作成し、こちらの記事を参考に
|
11
|
+
検索結果ページ`(search.php)`を作成し、こちらの記事を参考に
|
12
|
-
|
12
|
+
|
13
|
-
search.phpを作成したのですが、チェックした記事が表示されず、
|
13
|
+
`search.php`を作成したのですが、チェックした記事が表示されず、
|
14
14
|
|
15
15
|
全く関係ないものが何件か表示されます。
|
16
16
|
|
@@ -34,12 +34,10 @@
|
|
34
34
|
|
35
35
|
下記のコードは`searchform.php`と`search.php`になります。
|
36
36
|
|
37
|
+
### searchform.php
|
38
|
+
|
37
39
|
```PHP
|
38
40
|
|
39
|
-
searchform.php
|
40
|
-
|
41
|
-
|
42
|
-
|
43
41
|
<form method="get" id="search-form" action="<?php bloginfo('url'); ?>">
|
44
42
|
|
45
43
|
<label for="s" class="assistive-text">検索</label>
|
@@ -78,14 +76,10 @@
|
|
78
76
|
|
79
77
|
```
|
80
78
|
|
81
|
-
|
79
|
+
### search.php
|
82
80
|
|
83
81
|
```PHP
|
84
82
|
|
85
|
-
search.php
|
86
|
-
|
87
|
-
|
88
|
-
|
89
83
|
<?php
|
90
84
|
|
91
85
|
$s = $_GET['s'];
|
@@ -196,7 +190,7 @@
|
|
196
190
|
|
197
191
|
var_dump( $post_tags ); ?>`
|
198
192
|
|
199
|
-
こちらのコードを、search.phpに入力し値を確認してみたところ、
|
193
|
+
こちらのコードを、`search.php`に入力し値を確認してみたところ、
|
200
194
|
|
201
195
|
`string(0) ""`と書いておりました。
|
202
196
|
|
@@ -206,7 +200,7 @@
|
|
206
200
|
|
207
201
|
WordPressフォーラムにて、「もう少し具体的にやりたいことを教えてほしい。」と仰っていただいたため追記いたします
|
208
202
|
|
209
|
-
https://ja.wordpress.org/support/topic/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%8A%95%E7%A8%BF%E3%82%BF%E3%82%A4%E3%83%97%E3%81%AE%E7%B5%9E%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
|
203
|
+
`https://ja.wordpress.org/support/topic/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%8A%95%E7%A8%BF%E3%82%BF%E3%82%A4%E3%83%97%E3%81%AE%E7%B5%9E%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/`
|
210
204
|
|
211
205
|
|
212
206
|
|
@@ -218,7 +212,7 @@
|
|
218
212
|
|
219
213
|
|
220
214
|
|
221
|
-
チェックをしたタームが付いている全ての記事を検索結果(search.php)で表示したいです。(‘operator’=>’AND’で言うところの、ORと思っていただければと思います。)
|
215
|
+
チェックをしたタームが付いている全ての記事を検索結果(`search.php`)で表示したいです。(`‘operator’=>’AND’`で言うところの、`OR`と思っていただければと思います。)
|
222
216
|
|
223
217
|
|
224
218
|
|
@@ -252,9 +246,9 @@
|
|
252
246
|
|
253
247
|
|
254
248
|
|
255
|
-
search.phpを作成せず、searchform.phpだけを作成した場合、不具合なくカテゴリー検索が出来たのですが、
|
249
|
+
`search.php`を作成せず、`searchform.php`だけを作成した場合、不具合なくカテゴリー検索が出来たのですが、
|
256
|
-
|
250
|
+
|
257
|
-
search.phpを作成すると、「検索結果が見つかりませんでした。」となり、やはり検索結果がありません。
|
251
|
+
`search.php`を作成すると、「検索結果が見つかりませんでした。」となり、やはり検索結果がありません。
|
258
252
|
|
259
253
|
|
260
254
|
|
@@ -266,14 +260,10 @@
|
|
266
260
|
|
267
261
|
が、きちんと選択したカテゴリーが表示されています。
|
268
262
|
|
269
|
-
|
263
|
+
### search.php
|
270
264
|
|
271
265
|
```PHP
|
272
266
|
|
273
|
-
search.php
|
274
|
-
|
275
|
-
|
276
|
-
|
277
267
|
<h1>検索結果</h1>
|
278
268
|
|
279
269
|
<?php
|
@@ -308,12 +298,10 @@
|
|
308
298
|
|
309
299
|
ご教示のほど、よろしくお願いいたします。
|
310
300
|
|
301
|
+
### searchform.php
|
302
|
+
|
311
303
|
```PHP
|
312
304
|
|
313
|
-
search.php
|
314
|
-
|
315
|
-
|
316
|
-
|
317
305
|
<form role="search" method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>products/">
|
318
306
|
|
319
307
|
|
@@ -354,12 +342,10 @@
|
|
354
342
|
|
355
343
|
```
|
356
344
|
|
345
|
+
### search.php
|
346
|
+
|
357
347
|
```PHP
|
358
348
|
|
359
|
-
search.php
|
360
|
-
|
361
|
-
|
362
|
-
|
363
349
|
<?php
|
364
350
|
|
365
351
|
$s = $_GET['s'];
|
8
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -206,7 +206,7 @@
|
|
206
206
|
|
207
207
|
WordPressフォーラムにて、「もう少し具体的にやりたいことを教えてほしい。」と仰っていただいたため追記いたします
|
208
208
|
|
209
|
-
https://ja.wordpress.org/support/topic/%
|
209
|
+
https://ja.wordpress.org/support/topic/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%8A%95%E7%A8%BF%E3%82%BF%E3%82%A4%E3%83%97%E3%81%AE%E7%B5%9E%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
|
210
210
|
|
211
211
|
|
212
212
|
|
7
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -206,6 +206,8 @@
|
|
206
206
|
|
207
207
|
WordPressフォーラムにて、「もう少し具体的にやりたいことを教えてほしい。」と仰っていただいたため追記いたします
|
208
208
|
|
209
|
+
https://ja.wordpress.org/support/topic/%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e6%8a%95%e7%a8%bf%e3%82%bf%e3%82%a4%e3%83%97%e3%81%ae%e7%b5%9e%e3%82%8a%e8%be%bc%e3%81%bf%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/#post-11659599
|
210
|
+
|
209
211
|
|
210
212
|
|
211
213
|
商品を管理する、カスタム投稿タイプを作成しました。
|
6
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -202,7 +202,11 @@
|
|
202
202
|
|
203
203
|
|
204
204
|
|
205
|
-
### ※追記2
|
205
|
+
### ※追記2
|
206
|
+
|
207
|
+
WordPressフォーラムにて、「もう少し具体的にやりたいことを教えてほしい。」と仰っていただいたため追記いたします
|
208
|
+
|
209
|
+
|
206
210
|
|
207
211
|
商品を管理する、カスタム投稿タイプを作成しました。
|
208
212
|
|
5
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -224,7 +224,7 @@
|
|
224
224
|
|
225
225
|
|
226
226
|
|
227
|
-
###
|
227
|
+
### 追記3
|
228
228
|
|
229
229
|
※追記です。
|
230
230
|
|
4
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -199,3 +199,309 @@
|
|
199
199
|
こちらのコードを、search.phpに入力し値を確認してみたところ、
|
200
200
|
|
201
201
|
`string(0) ""`と書いておりました。
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
### ※追記2 動機
|
206
|
+
|
207
|
+
商品を管理する、カスタム投稿タイプを作成しました。
|
208
|
+
|
209
|
+
商品数が膨大なため、チェックボックスを使った複数のタクソノミー内の
|
210
|
+
|
211
|
+
ターム絞り込み検索を実装したいです。(test1タクソノミー内のtest2ターム, test3タクソノミー内のtest4ターム、という風に複数のタクソノミー内のタームにチェックをしたい。)
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
チェックをしたタームが付いている全ての記事を検索結果(search.php)で表示したいです。(‘operator’=>’AND’で言うところの、ORと思っていただければと思います。)
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
本文にも記載してます通り、参考URLを見ながら作成してみたのですが、チェックしたタームの記事ではなく、固定ページのページ一覧が表示されてしまいます。
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
また、検索結果ページの記事一覧のスタイルを、記事のタイトル +サムネイル+ 本文の抜粋 を表示したいのですが、今現時点では記事の内容全てが検索結果に出るようになってしまっています。
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
### ※追記3
|
228
|
+
|
229
|
+
※追記です。
|
230
|
+
|
231
|
+
「また、検索結果ページの記事一覧のスタイルを、記事のタイトル +サムネイル+ 本文の抜粋 を表示したいのですが」と言ったんですが、
|
232
|
+
|
233
|
+
テーマのデフォルト一覧表示形式で問題ないです。(Lightningテーマを使用しております。)
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
## ※追記4
|
238
|
+
|
239
|
+
WordPressフォーラム先で、下記の参考サイトを紹介して頂き、
|
240
|
+
|
241
|
+
https://illustswitch.com/wordpress-search-filter/
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
ご紹介いただいた、サイトを参考に作成してみたのですが
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
search.phpを作成せず、searchform.phpだけを作成した場合、不具合なくカテゴリー検索が出来たのですが、
|
250
|
+
|
251
|
+
search.phpを作成すると、「検索結果が見つかりませんでした。」となり、やはり検索結果がありません。
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
以前のコードでは、固定ページは表示されていたのですが、現状では固定ページさえも表示されなくなってしまいました。
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
検索結果ページでは、以下のコードの部分(ページでは「カテゴリー:(選択したカテゴリー)」)
|
260
|
+
|
261
|
+
が、きちんと選択したカテゴリーが表示されています。
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
```PHP
|
266
|
+
|
267
|
+
search.php
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
<h1>検索結果</h1>
|
272
|
+
|
273
|
+
<?php
|
274
|
+
|
275
|
+
if(is_array($get_cats)) {
|
276
|
+
|
277
|
+
echo '<p>カテゴリー:';
|
278
|
+
|
279
|
+
foreach ($get_cats as $val) {
|
280
|
+
|
281
|
+
$p_term = get_term_by('slug', $val, 'products_cat_brand');
|
282
|
+
|
283
|
+
echo $p_term->name;
|
284
|
+
|
285
|
+
if ($val !== end($get_cats)) {
|
286
|
+
|
287
|
+
echo ', ';
|
288
|
+
|
289
|
+
}
|
290
|
+
|
291
|
+
}
|
292
|
+
|
293
|
+
echo '</p>';
|
294
|
+
|
295
|
+
} ?>
|
296
|
+
|
297
|
+
```
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
ご紹介していただいたサイトを元に、作成してみたコードを下に記載しておきますので、
|
302
|
+
|
303
|
+
ご教示のほど、よろしくお願いいたします。
|
304
|
+
|
305
|
+
```PHP
|
306
|
+
|
307
|
+
search.php
|
308
|
+
|
309
|
+
|
310
|
+
|
311
|
+
<form role="search" method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>products/">
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
<h2>カテゴリー</h2>
|
316
|
+
|
317
|
+
<?php
|
318
|
+
|
319
|
+
$taxonomies_args = array(
|
320
|
+
|
321
|
+
'orderby' => 'name',
|
322
|
+
|
323
|
+
'order' => 'ASC',
|
324
|
+
|
325
|
+
);
|
326
|
+
|
327
|
+
$taxonomies = get_terms( 'products_cat_brand', $taxonomies_args );
|
328
|
+
|
329
|
+
foreach($taxonomies as $taxonomies) :
|
330
|
+
|
331
|
+
?>
|
332
|
+
|
333
|
+
<label><input type="checkbox" name="get_cats[]" value="<?php echo $taxonomies->slug; ?>"><?php echo $taxonomies->name; ?></label>
|
334
|
+
|
335
|
+
<?php endforeach; ?>
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
<h2><?php _x( 'Search for:', 'label' ); ?>キーワード</h2>
|
340
|
+
|
341
|
+
<input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="キーワードを入力してください" />
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
<input type="submit" value="検索" />
|
346
|
+
|
347
|
+
</form>
|
348
|
+
|
349
|
+
```
|
350
|
+
|
351
|
+
```PHP
|
352
|
+
|
353
|
+
search.php
|
354
|
+
|
355
|
+
|
356
|
+
|
357
|
+
<?php
|
358
|
+
|
359
|
+
$s = $_GET['s'];
|
360
|
+
|
361
|
+
$get_cats = $_GET['get_cats'];
|
362
|
+
|
363
|
+
$get_tags = $_GET['get_tags'];
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
if($get_cats) {
|
368
|
+
|
369
|
+
$tax_ary[] = array(
|
370
|
+
|
371
|
+
'taxonomy' => 'products_cat_brand',
|
372
|
+
|
373
|
+
'field' => 'slug',
|
374
|
+
|
375
|
+
'terms' => $get_cats,
|
376
|
+
|
377
|
+
'operator' => 'IN', //ANDかIN
|
378
|
+
|
379
|
+
);
|
380
|
+
|
381
|
+
}
|
382
|
+
|
383
|
+
if($get_tags) {
|
384
|
+
|
385
|
+
$tax_ary[] = array(
|
386
|
+
|
387
|
+
'taxonomy' => 'products_cat_brand',
|
388
|
+
|
389
|
+
'field' => 'slug',
|
390
|
+
|
391
|
+
'terms' => $get_tags,
|
392
|
+
|
393
|
+
'operator' => 'IN', //ANDかIN
|
394
|
+
|
395
|
+
);
|
396
|
+
|
397
|
+
}
|
398
|
+
|
399
|
+
?>
|
400
|
+
|
401
|
+
<?php if (!($s || $get_cats || $get_tags)): ?>
|
402
|
+
|
403
|
+
<p>検索条件を指定してください</p>
|
404
|
+
|
405
|
+
<?php get_search_form(); ?>
|
406
|
+
|
407
|
+
<?php else: ?>
|
408
|
+
|
409
|
+
|
410
|
+
|
411
|
+
<h1>検索結果</h1>
|
412
|
+
|
413
|
+
<?php
|
414
|
+
|
415
|
+
if(is_array($get_cats)) {
|
416
|
+
|
417
|
+
echo '<p>カテゴリー:';
|
418
|
+
|
419
|
+
foreach ($get_cats as $val) {
|
420
|
+
|
421
|
+
$p_term = get_term_by('slug', $val, 'products_cat_brand');
|
422
|
+
|
423
|
+
echo $p_term->name;
|
424
|
+
|
425
|
+
if ($val !== end($get_cats)) {
|
426
|
+
|
427
|
+
echo ', ';
|
428
|
+
|
429
|
+
}
|
430
|
+
|
431
|
+
}
|
432
|
+
|
433
|
+
echo '</p>';
|
434
|
+
|
435
|
+
} ?>
|
436
|
+
|
437
|
+
<?php
|
438
|
+
|
439
|
+
if(is_array($get_tags)) {
|
440
|
+
|
441
|
+
echo '<p>タグ:';
|
442
|
+
|
443
|
+
foreach ($get_tags as $val) {
|
444
|
+
|
445
|
+
$s_term = get_term_by('slug', $val, 'products_cat_brand');
|
446
|
+
|
447
|
+
echo $s_term->name;
|
448
|
+
|
449
|
+
if ($val !== end($get_tags)) {
|
450
|
+
|
451
|
+
echo ', ';
|
452
|
+
|
453
|
+
}
|
454
|
+
|
455
|
+
}
|
456
|
+
|
457
|
+
echo '</p>';
|
458
|
+
|
459
|
+
} ?>
|
460
|
+
|
461
|
+
<?php
|
462
|
+
|
463
|
+
if($s) { echo '<p>キーワード:'.$s.'</p>'; } ?>
|
464
|
+
|
465
|
+
|
466
|
+
|
467
|
+
<?php
|
468
|
+
|
469
|
+
$my_query = new WP_Query( array(
|
470
|
+
|
471
|
+
'paged' => get_query_var('paged'),
|
472
|
+
|
473
|
+
'post_type' => 'post',
|
474
|
+
|
475
|
+
'tax_query' => $tax_ary,
|
476
|
+
|
477
|
+
'relation' => 'AND', //ANDかOR
|
478
|
+
|
479
|
+
's' => $s,
|
480
|
+
|
481
|
+
)); ?>
|
482
|
+
|
483
|
+
<?php if($my_query->have_posts() ) : ?>
|
484
|
+
|
485
|
+
<ul>
|
486
|
+
|
487
|
+
<?php while( $my_query->have_posts()) : $my_query->the_post(); ?>
|
488
|
+
|
489
|
+
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
|
490
|
+
|
491
|
+
</li>
|
492
|
+
|
493
|
+
<?php endwhile; ?>
|
494
|
+
|
495
|
+
</ul>
|
496
|
+
|
497
|
+
<?php else: ?>
|
498
|
+
|
499
|
+
<p>結果が見つかりませんでした。</p>
|
500
|
+
|
501
|
+
<?php endif; ?>
|
502
|
+
|
503
|
+
<?php get_search_form(); ?>
|
504
|
+
|
505
|
+
<?php endif; ?>
|
506
|
+
|
507
|
+
```
|
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -187,3 +187,15 @@
|
|
187
187
|
wp_reset_query(); ?>
|
188
188
|
|
189
189
|
```
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
### ※追記
|
194
|
+
|
195
|
+
`<?php $post_tags = get_query_var( 'post_tag' );
|
196
|
+
|
197
|
+
var_dump( $post_tags ); ?>`
|
198
|
+
|
199
|
+
こちらのコードを、search.phpに入力し値を確認してみたところ、
|
200
|
+
|
201
|
+
`string(0) ""`と書いておりました。
|
2
編集
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ターム絞り込み
|
1
|
+
ターム絞り込み チェックした記事が表示されない。
|
test
CHANGED
@@ -1,20 +1,90 @@
|
|
1
|
-
ht
|
1
|
+
テーマは「Lightning」を使用しております。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
https://kotori-blog.com/wordpress/refinement_search/#refinement6_1
|
6
6
|
|
7
7
|
こちらの記事を参考に、ターム絞り込み検索を実装しました。
|
8
8
|
|
9
|
+
|
10
|
+
|
9
11
|
検索結果ページ(search.php)を作成し、こちらの記事を参考に
|
10
12
|
|
11
|
-
search.phpを作成したのですが、
|
13
|
+
search.phpを作成したのですが、チェックした記事が表示されず、
|
12
14
|
|
15
|
+
全く関係ないものが何件か表示されます。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
チェックボックスをチェックせずに、フリーワードだけを入力した場合は、
|
20
|
+
|
21
|
+
問題なく文句が含まれている記事が出てきます。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
また、記事のサムネイル付き抜粋ではなく、記事の中身そのものが
|
26
|
+
|
27
|
+
一覧に表示されてしまいます。
|
28
|
+
|
29
|
+
|
30
|
+
|
13
|
-
|
31
|
+
この場合どのようなコードを書くのが正しいのでしょうか。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
下記のコードは`searchform.php`と`search.php`になります。
|
36
|
+
|
37
|
+
```PHP
|
38
|
+
|
39
|
+
searchform.php
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
<form method="get" id="search-form" action="<?php bloginfo('url'); ?>">
|
44
|
+
|
45
|
+
<label for="s" class="assistive-text">検索</label>
|
46
|
+
|
47
|
+
<input type="text" name="s" id="s" placeholder="検索" />
|
48
|
+
|
49
|
+
<div>ブランドから選ぶ</div>
|
50
|
+
|
51
|
+
<?php
|
52
|
+
|
53
|
+
$taxonomy_name = 'products_cat_brand';
|
54
|
+
|
55
|
+
$taxonomys = get_terms($taxonomy_name, array('hide_empty' => false));
|
56
|
+
|
57
|
+
if(!is_wp_error($taxonomys) && count($taxonomys)):
|
58
|
+
|
59
|
+
foreach($taxonomys as $taxonomy):
|
60
|
+
|
61
|
+
$tax_posts = get_posts(array('post_type' => get_post_type('products'), 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) );
|
62
|
+
|
63
|
+
?>
|
64
|
+
|
65
|
+
<label><input type="checkbox" name="post_tag[]" value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></label><br>
|
66
|
+
|
67
|
+
<?php
|
68
|
+
|
69
|
+
endforeach;
|
70
|
+
|
71
|
+
endif;
|
72
|
+
|
73
|
+
?>
|
74
|
+
|
75
|
+
<input type="submit" value="検索" />
|
76
|
+
|
77
|
+
</form>
|
78
|
+
|
79
|
+
```
|
14
80
|
|
15
81
|
|
16
82
|
|
17
83
|
```PHP
|
84
|
+
|
85
|
+
search.php
|
86
|
+
|
87
|
+
|
18
88
|
|
19
89
|
<?php
|
20
90
|
|
@@ -30,7 +100,7 @@
|
|
30
100
|
|
31
101
|
$taxquerysp[] = array(
|
32
102
|
|
33
|
-
'taxonomy'=>'post_
|
103
|
+
'taxonomy'=>'products_cat_brand',
|
34
104
|
|
35
105
|
'terms'=> $post_tag,
|
36
106
|
|
@@ -60,11 +130,11 @@
|
|
60
130
|
|
61
131
|
if ($val === end($post_tag)) {
|
62
132
|
|
63
|
-
echo get_term_by('slug',$val,"post_
|
133
|
+
echo get_term_by('slug',$val,"products_cat_brand")->name;
|
64
134
|
|
65
135
|
}else{
|
66
136
|
|
67
|
-
echo get_term_by('slug',$val,"post_
|
137
|
+
echo get_term_by('slug',$val,"products_cat_brand")->name.", ";
|
68
138
|
|
69
139
|
}
|
70
140
|
|
@@ -117,29 +187,3 @@
|
|
117
187
|
wp_reset_query(); ?>
|
118
188
|
|
119
189
|
```
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
こちらのコードなんですが、しっかりと選択したタームがついている記事は
|
124
|
-
|
125
|
-
表示されるのですが、先述の通りヘッダーやフッター、CSS等が反応していません。
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
そこで、1行目に`<?php get_header(); ?>`やフッターの位置に`<?php get_footer(); ?>`
|
130
|
-
|
131
|
-
を記述したところ、無事表示されたのですが
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
検索結果が抜粋ではなく、記事の中身まるごと検索結果一覧に表示されてしまいます。
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
この場合どのように記述するのが、正解なんでしょうか。
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
上記のコードをどこかに記述するだけで、記事一覧以外のデザインは、
|
144
|
-
|
145
|
-
他のページと同じようにできないのでしょうか。
|
1
編集
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ターム絞り込み検索
|
1
|
+
ターム絞り込み検索結果ページ(search.php)作成について
|
test
CHANGED
File without changes
|