回答編集履歴

3

コメントに対する追記

2022/01/28 04:23

投稿

CHERRY
CHERRY

スコア25175

test CHANGED
@@ -31,3 +31,27 @@
31
31
  ?>
32
32
  ```
33
33
 
34
+ ----
35
+ コメントに対する追記
36
+
37
+ > エリアを複数指定したとき、例えば「東京都」と「神奈川県」で検索した時のパラメーターが 「&area=tokyo,kanagawa」で、複数の名前(ラベル)を表示するのは可能ですか?
38
+
39
+ `$_GET['area'])` の値が `tokyo,kanagawa` のようにカンマ区切りで複数の値が入るのであれば、[explode](https://www.php.net/manual/ja/function.explode.php) で分割して [foreach](https://www.php.net/manual/ja/control-structures.foreach.php) 等のループ処理で順に処理する感じでしょうか。
40
+
41
+ ```
42
+ <?php
43
+ if(isset($_GET['area'])) {
44
+ $products = explode(',', $_GET['area']);
45
+
46
+ foreach( $products as $product ){
47
+ $term = get_term_by('slug', $product, 'area');
48
+ echo $term->name;
49
+ }
50
+ }
51
+ ?>
52
+ ```
53
+
54
+ 上記では echo で、そのまま表示していますが、 `echo $term->name; ` の部分で、配列に代入して、foreach の処理が終了してから、[implode](https://www.php.net/manual/ja/function.implode.php) で、配列の値を連結して文字列にしてから表示する方法もあります。
55
+
56
+
57
+

2

追記修正

2022/01/28 02:23

投稿

CHERRY
CHERRY

スコア25175

test CHANGED
@@ -10,3 +10,24 @@
10
10
  のような感じで、取得できます。
11
11
  ( 'タームのスラッグ' や 'タクソノミー' の部分は項目に合わせて変更してください。)
12
12
 
13
+ ----
14
+
15
+ コメントに対する返信
16
+
17
+ > $term = get_term_by('slug', 'tokyo', 'area');
18
+ > echo $term->name; ?>
19
+
20
+ と固定で検索しているので常に表示されると思います。
21
+ if 文の中にいれて、'tokyo' の部分は、パラメータを参照するのが良いと思います。
22
+ $product にパラメータの取得結果を入れているのであれば、以下のような感じでしょうか。
23
+
24
+ ```
25
+ <?php
26
+ if(isset($_GET['area'])) {
27
+ $product = $_GET['area'];
28
+ $term = get_term_by('slug', $product, 'area');
29
+ echo $term->name;
30
+ }
31
+ ?>
32
+ ```
33
+

1

2022/01/28 01:02

投稿

CHERRY
CHERRY

スコア25175

test CHANGED
@@ -1,6 +1,6 @@
1
1
  > そしてこのパラメーターを使って下記のようなコードを書いたのですが、「検索条件:tokyo、price01」とスラッグで表示され「スラッグ名」で表示されませんでした。
2
2
 
3
- URL で渡されるのは、「スラッグ」なので、自分で「スラッグ」から「名前」を取得(変換)するコードを書く必要があります。
3
+ URL で渡される( $_GET で取得する値 ) は、「スラッグ」なので、自分で「スラッグ」から「名前」を取得(変換)するコードを書く必要があります。
4
4
 
5
5
  スラッグから名前(ラベル)の取得は、[get_term_by](https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_term_by) を使って、
6
6
  ```