第17話

Breadcrumb NavXTで階層が増えても必ず『HOME>メインカテゴリ>記事タイトル』の順番で出力する方法

こんにちは!Takuya.B(@TB_IQ)です。

パンくずリストを表示させるプラグインとして有名なのが『Breadcrumb NavXT』だ。このプラグインをインストールしてテンプレートファイルに数行のコードを書くだけでパンくずリストを表示させることができる。

先日、次のようなカスタマイズ依頼があった。

パンくずリストが長くなって見にくいので、『HOME > 親カテゴリ > 子カテゴリ > 孫カテゴリ > ひ孫カテゴリ > 記事タイトル』の赤文字の部分だけを表示させたい。

この場合、親カテゴリに記事をぶち込むのが一番手っ取り早い。しかし、特に雑記ブログだと扱うカテゴリも増える傾向にあるので、階層が増えてしまうのは仕方がない。結果、長ったらしいパンくずリストがが完成する。

そこで今日は、このように孫・ひ孫カテゴリの記事で表示されるパンくずリストを『HOME>親カテゴリ>記事タイトル』と3階層でスマートに表示させる方法を紹介する。

説明のしやすさを重視して以下では親カテゴリのことをメインカテゴリと呼びますので、ご注意ください!

スポンサーリンク

『HOME>メインカテゴリ>記事タイトル』で表示させる手順

パンくずリストを表示させたい箇所に表示用コードを記述

まずはsingle.phpなどのパンくずリストを表示させたい箇所に以下のコードを記述する。

<div class="breadcrumbs">
    <?php if(function_exists('bcn_display'))
    {
        bcn_display();
    }?>
</div>

これはBreadcrumbs NavXTでパンくずリストを表示させるために必要なコードだ。

functions.phpにコードを記述

次に『HOME>メインカテゴリ>記事タイトル』の順番で表示させるためにfunctions.phpに以下のコードを追加する。

add_action('bcn_after_fill', 'bc_limit');
function bc_limit ($trail) {
  $max = count($trail->breadcrumbs);
  for ($i = 2; $i < $max - 1; $i++) {
    unset($trail -> trail[$i]);
  }
}

こうすることで孫、ひ孫とカテゴリ階層が深くなっても『HOME>メインカテゴリ>記事タイトル』の順番で表示される。

スポンサーリンク

あとがき

この方法を使えば、どのようなカテゴリ構成をしていても必ず3階層でパンくずリストが表示されるようになる。

是非とも試していただきたい!

というわけで、次回もよしなに!