MAGAZINE

Twitter
Facebook
KEYWORDS
ホームページ制作ならWISE

カスタムタクソノミーで都道府県、市区町村を作って表示させる

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で取り出すキーワードを指定すれば表示可能です。

YAS

2011年よりweb制作に従事。現在は主にWordpressによるサイト制作の他、DNS切替時や、サーバー移管時の各種トラブル解決を行っています。