【コピぺOK】taxonomy.phpで子ターム名と一緒に親ターム名を表示する方法!

 - 

 -  >

 -  Web Design

あるECサイトを作っていて、カスタム投稿によってどんどん商品記事を作成していき、カテゴリは親子関係に分かれているというサイトでした。

そしてカテゴリはこんな感じでした。

Tシャツ

・赤
・青
・黄

ボトムス

・赤
・青
・黄

 

名称的にはぱっと見同じカテゴリがあるので、子カテゴリを表示するときに親もちゃんと表示できるようにしないとどこのカテゴリに今いるのかよくわからなくなってしまいます。

そのため、親カテゴリを一緒に表示する必要がありました。

この行いたい処理を完璧実装できる方法を書いているサイトがなかったので、備忘録を兼ねてやり方を書いておきます。

 

要件定義

 

(ここまで書いておいて、カテゴリではなくカスタム投稿なのでタームでした・・・
まあカテゴリでも応用すれば使えるはずですが・・・)

 

コード

行っている処理

まず、条件分岐をして、親タームを表示しているときは現在のターム名のみを表示するように、それ以外(子ターム)を表示しているときは親タームを表示するようにしています。

この条件分岐を行わなければ、親タームのときに表示されるターム名が、ループのトップに来ている記事によってバラバラになってしまいます。

また、最初の親タームのとき子タームの時で配列の仕方を変えていますが、ここはカテゴリ表示の優先順位によって修正してください。思った通りに全く表示できない場合は、functionで表示の優先順位を変える必要があります。自分はこのようにIDによって表示の優先順位を変更しています。

array_pop() – 配列の末尾から要素を取り除く
array_shift() – 配列の先頭から要素を一つ取り出す

PHP: array_push – Manualより)

 

そして、親タームの方は簡単ですが、ターム名を取得して出力しているだけです。

子タームの時は、配列を二つ用意して子タームと親タームを出力しています。

 

このように自分は書きましたが、もしかしたら二つに分ける必要なく、もっとシンプルに書くことができたかもしれません。

Facebookでシェアする

Twitterでシェアする

はてなブックマークに追加

 更新をチェックする! follow us in feedly

カスタム検索

Popular Post

Copyright© 新卒フリーランサーのブログ!2015 All Rights Reserved.