SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
てるてる動画

【WordPress】簡単にカテゴリのパンくずリストを表示する(複数可)

問題

WordPressで、カテゴリのパンくずリストを表示したい。複数カテゴリに登録した場合も対応できれば。

wordpress-category-1

答え

ループの中で、こんな風にするとカテゴリが1つ表示される。

wordpress-category-2

<?php $_categories = get_the_category(); ?>
<?php echo get_category_parents($_categories[0]->term_id, true); ?>

こんな風にすると、複数カテゴリでもあるだけ表示する。

wordpress-category-3

<?php $_categories = get_the_category(); ?>
<?php foreach ($_categories as $_category) { ?>
<p><?php echo get_category_parents($_category->term_id, true); ?></p>
<?php } ?>

区切り文字を変えたい、リンクしないでよいからカテゴリ名の表示だけしたいなどの場合は、マニュアル参照。

http://wpdocs.sourceforge.jp/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%BF%E3%82%B0/get_category_parents

http://codex.wordpress.org/Function_Reference/get_category_parents

関連するメモ

コメント(2)

なこ 2015年11月21日 16:10

カテゴリーの表示参考にさせていただいております。
「複数カテゴリでもあるだけ表示する」ですが
【例】
カテゴリ01/カテゴリ02/カテゴリ03/カテゴリ04
カテゴリ01/カテゴリ02/カテゴリ03/カテゴリ04

特定のカテゴリーを非表示にしたい場合はどのようにすればよいでしょうか
例えば上記例で言うと 「カテゴリ01/カテゴリ02/」を非表示にしたいです。
ご教授いただければ幸いです。
よろしくお願いいたします。

yoshimura 2015年11月25日 10:02

服で例えると、ある無地Tシャツが以下の3つに所属していて、
・メンズ/Tシャツ/無地
・レディース/Tシャツ/無地
・夏/半袖/Tシャツ
「メンズ/Tシャツ/無地」を非表示にしたいといった理解でよいでしょうか。

理解が正しいかどうかわからないですが、
条件に応じて処理をおこなうならif文で条件分岐でよいと思います。

★ カテゴリID 10,20,30 を除く例

<?php $_categories = get_the_category(); ?>
<?php foreach ($_categories as $_category) { ?>
<?php if ($_category->term_id != 10 && $_category->term_id != 20 && $_category->term_id != 30) { ?>
<p><?php echo get_category_parents($_category->term_id, true); ?></p>
<?php } ?>
<?php } ?>

大カテゴリ/中カテゴリ/小カテゴリ の 中カテゴリ/ など間の一部を非表示にしたいという場合は、そのような場合にちょうどよいフックがなさそうなので、get_category_parents関数の戻り値を置換するなどやや無理やりな対応になりそうな気がします。