teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

情報の追加。

2018/04/03 17:07

投稿

kei344
kei344

スコア69625

answer CHANGED
@@ -38,4 +38,23 @@
38
38
  }
39
39
  echo '<td id="tax1">' . $tmp_term_items. '</td>';
40
40
  }
41
- ```
41
+ ```
42
+ ---
43
+
44
+ **追記:**
45
+
46
+
47
+ > 質問内容にも書きましたが、親子カテゴリにするのはクライアントにはできず、またこちらの作業量が膨大になってしまうので、厳しいのです。
48
+
49
+ 何を想定して作業量と考えているかがわかりませんが、住所は[郵便局の公開データ](http://www.post.japanpost.jp/zipcode/download.html)があるし、[API(Yahoo!)](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/addressdirectory.html)もありますよ。
50
+ 管理画面からそれを使って親子関係を持ったカテゴリを登録するようにするとかで処理できそうですが・・・。
51
+
52
+ 【[API/マッシュアップ]都道府県→市町村のドリルダウン検索 | Wood-Roots:blog】
53
+ [http://wood-roots.com/web/api/495](http://wood-roots.com/web/api/495)
54
+
55
+ 上記ドリルダウンの値をカスタムフィールドで持って、それをフックで階層化されたタームに置き換え(タームを階層化して登録&記事をそのタームに紐付ける)る。
56
+
57
+ 【[WordPress]カスタムフィールドの値を置換するフィルターフック | Wood-Roots:blog】
58
+ [http://wood-roots.com/web/wordpress/1357](http://wood-roots.com/web/wordpress/1357)
59
+
60
+ か、記事に設定されたタームの組み合わせをDBのどこかに保存し、それを使ってURLを構築するとか。(管理画面を作ったりメンテがたいへん)

1

情報の追加。

2018/04/03 17:07

投稿

kei344
kei344

スコア69625

answer CHANGED
@@ -1,2 +1,41 @@
1
1
  提示されているコードは2軸だから成り立つコードなので、4軸には対応できません。
2
- ラジオボタンとかにしてフォームで送った方がよいのでは?
2
+ ラジオボタンとかにしてフォームで送った方がよいのでは?
3
+
4
+ ---
5
+
6
+ **追記:**
7
+
8
+ 適当に変数名を付けたのでかなりわかりにくいと思いますが。
9
+
10
+ ```PHP
11
+ // 未検証
12
+ $this_url = get_post_type_archive_link( 'assessment' );
13
+ $ttx = [
14
+ 'address01'
15
+ , 'address02'
16
+ , 'address03'
17
+ , 'address04'
18
+ ];
19
+ $ttg = [
20
+ isset( $_GET[ $ttx[ 0 ] ] ) ? $_GET[ $ttx[ 0 ] ] : ''
21
+ , isset( $_GET[ $ttx[ 1 ] ] ) ? $_GET[ $ttx[ 1 ] ] : ''
22
+ , isset( $_GET[ $ttx[ 2 ] ] ) ? $_GET[ $ttx[ 2 ] ] : ''
23
+ , isset( $_GET[ $ttx[ 3 ] ] ) ? $_GET[ $ttx[ 3 ] ] : ''
24
+ ];
25
+ foreach( $ttx as $key => $val ) {
26
+ $tmp_terms = get_terms( $val, '&hide_empty=true' );
27
+ if ( !$tmp_terms ) continue;
28
+ $tmp_term_items = '';
29
+ $tmp_url_same = '';
30
+ foreach( $ttg as $key2 => $val2 ) {
31
+ if ( $key === $key2 ) continue;
32
+ $tmp_url_same .= '&'.$ttx[ $key2 ].'='.$ttg[ $key2 ];
33
+ }
34
+ foreach( $tmp_terms as $tmp_term ) {
35
+ $current = ( $ttg[ $key ] === $tmp_term->slug ) ? 'current' : '';
36
+ $tmp_url = $this_url.'?'.$ttx[ $key ].'='.$tmp_term->slug.$tmp_url_same;
37
+ $tmp_term_items .= '<p><a href="'.esc_url( $tmp_url ).'" class="'.$current.'">' .esc_html( $tmp_term->name ). '</a></p>';
38
+ }
39
+ echo '<td id="tax1">' . $tmp_term_items. '</td>';
40
+ }
41
+ ```