taxonomy.phpで特定のタームの時にそれに関するタームのみのリストを作成したいです。
-
taxonomy.phpで特定のタームの時にそれに関するタームのみのリストを作成したいです。
■条件
条件としては以下です。タクソノミー名:area
ターム名(スラッグ):
北海道
札幌
小樽
神奈川
横浜
川崎
愛知
名古屋
岡崎
・・・
(都道府県が親、市区町村が子の、親子関係のタームです)■目的
上記の条件において、北海道or札幌or小樽のアーカイブページ(taxonomy.phpで作成)が表示されている時には北海道
札幌
小樽というリストを、
神奈川or横浜or川崎のアーカイブページが表示されている時には神奈川
横浜
川崎というリストを表示したいのです。
作業効率の理由から、北海道or札幌or小樽をタクソノミーarea01に、神奈川or横浜or川崎をタクソノミーarea02に、という風に、タクソノミーを分けるのは無しです。★★★1つのタクソノミーでありながら、スラッグで判別してそのスラッグに関するリストのみ表示させたい★★★
というのが目的になります。
■現状
現状のプログラムは以下です。<?php
// パラメータ
$args = array(
‘orderby’ => ‘term_group’,
// 親タームのみ取得
‘parent’ => 0,
// 投稿記事がないタームも取得
‘hide_empty’ => false,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘area’, // カスタムタクソノミー名
‘field’ => ‘slug’, // ターム名を term_id,slug,name のどれで指定するか
‘terms’ => ‘北海道’ // タクソノミーに属するターム名
)
)
);// カスタムタクソノミー名
$taxonomy01 = ‘area’;
// カスタム分類のタームのリストを取得
$terms01 = get_terms( $taxonomy01 , $args );
if ( count( $terms01 ) != 0 ) {
echo ‘<form><select class=”postform” name=”sortside01″>’.”\n”;
// 親タームのリスト $terms01 を $term01 に格納してループ
foreach ( $terms01 as $term01 ) {
// 親タームのURLを取得
$term01 = sanitize_term( $term01, $taxonomy01 );
$term01_link = get_term_link( $term01, $taxonomy01 );
if ( is_wp_error( $term01_link ) ) {
continue;
}
// 親タームのURLと名称を出力
echo ‘<option class=”level-0″ value=”‘ . esc_url( $term01_link ) . ‘”>’ . $term01->name. ‘</option>’.”\n”;// 子タームのIDのリストを取得
$term01_children = get_term_children( $term01->term_id, $taxonomy01 );
if( count( $term01_children ) != 0 ) {
echo ”;
// 子タームのIDのリスト $term01_children を $term01_idに格納してループ
foreach ( $term01_children as $term01_id ) {
// 子タームのIDを元に子タームの情報を取得
$term01_child = get_term_by( ‘id’, $term01_id, $taxonomy01 );
// 子タームのURLを取得
$term01_child = sanitize_term( $term01_child, $taxonomy01 );
$term01_child_link = get_term_link( $term01_child, $taxonomy01 );
if ( is_wp_error( $term01_child_link ) ) {
continue;
}
// 子タームのURLと名称を出力
echo ‘<option class=”level-1″ value=”‘ . esc_url( $term01_child_link ) . ‘”> ‘ . $term01_child->name . ‘</option>’.”\n”;
}
echo ”;
}
}
echo ‘</select><input type=”button” value=”表示” onClick=”top.location.href=sortside01.value” /></form>’;
}
?>■症状
‘terms’ => ‘北海道’ // タクソノミーに属するターム名 (12行目くらい)
でスラッグを指定すればそのスラッグに関わる親子のみのリストが表示されると考えたのですが、北海道
札幌
小樽
神奈川
横浜
川崎
愛知
名古屋
岡崎
・・・と全てが表示されてしまいます。
$taxonomy01 = ‘area’; (18行目くらい)
と指定してあるから、そのタクソノミーのターム全部が表示されるのが当たり前と思われるかもしれませんが、これが無いとリストそのものが表示されません。■懇願
お知恵をいただけると幸いです。
何卒よろしくお願いいたします。
- トピック「taxonomy.phpで特定のタームの時にそれに関するタームのみのリストを作成したいです。」には新たに返信することはできません。