カスタムタクソノミーで都道府県、市区町村を作って表示させる
WEB
久々に更新します。
最近、実装に苦労してる機能があって、それに付きっ切りになっています。
完成したらブログにあげる予定なんで、もうしばらくお待ちくださいw
さて今回はWordpressのphpについて記事にします。
今回、カスタムタクソノミーとタームで都道府県と市区町村を親子階層にして表示するコードを実装しました。
今回は全国展開の企業に対して、展開している都道府県、市区町村にあるお店を表示したいとのことだったので作成しました。
カスタムタクソノミーの構成
area - osaka - tokyo - sinjyuku-ku - hachiouji-shi - hinode-chou - niijima-mura
この構成でそれぞれの都道府県アーカイブに子タームの一覧を表示
ただし、市、区、その他と表示枠を分けて表示させたい。
表示ファイル
taxonomy.phpを使用
表示条件
表示先の都道府県によって区が無いものがある 区一覧 市一覧 その他一覧の表示先に分ける
表示方法
<?php
$term_id = get_queried_object_id(); //IDを取得
$term = get_term( $term_id ); //上記で取得したIDを使ってターム情報を取得
$term_object = get_queried_object(); //タームオブジェクトを取得
$categories = get_terms( $term_object->taxonomy, 'hide_empty=0&parent=' . $term_id ); //現在のタクソノミータームの子タームを取得
?>
<?php if(preg_grep('/-ku/', array_column($categories, 'slug'))): ?>
<?php
/*
preg_grepで slugに /-ku/ が入っているものがあれば表示する
このif分岐でタイトルの表示、非表示に対応する
*/
?>
<h4 class="title">区一覧</h4>
<?php if($categories) { ?>
<?php foreach($categories as $value): ?>
<?php if ( strpos( $value->slug, '-ku' ) ): ?>
<a href="<?php echo get_term_link($value); ?>"><?php echo $value->name; ?></a>
<?php endif; ?>
<?php endforeach;?>
<?php }; ?>
<?php
/*
foreachで回す
strposでforeachの中にある$value->slugに '-ku'が入っているものを書き出す
この形で区一覧を取得できる
*/
?>
<?php endif; ?>
今回の表示方法では区だけが表示される様になっています。
foreachの前のif分岐からコピーして、strposで取り出すキーワードを指定すれば表示可能です。