Breadcrumb NavXTで、archive.phpにパンくずを表示させる簡単な方法

・Breadcrumb NavXTを使っているが、archives.php (デフォルトの投稿一覧ページ)には、トップページのリンクしか追加されないのだけど…
・デフォルトの投稿ページのパンくずリストに、archives.php へのリンクを設置したいな!



という方に向けて、記事を書きました。



【この記事の信頼性】
当ブログ(RENBLOG)の編集長である僕は、これまでホームページ制作に約40サイト以上、携わらせて頂いております。

また、当ブログ(RENBLOG)は、記事数は少ないものの、数ページ10以内を獲得している為、割と信頼できるのではと思います。

【本題に入る前に、悩みの再確認】

「結論を早く知りたい!」という方が、多いと思いますが、まずこの記事を読んでいる読者と、今僕が書いている内容にずれが無いか確認させてください。


というのも、過去に僕もこの件で悩んだときに、そもそも検索エンジンに何と検索したらよいか分からずに、丸一日ムダに時間を使ったからです。


おそらく、Breadcrumb NavXTのパンくずリストでアーカイブページのみエラーが出るで出ている悩みの通りに、


archives.php(デフォルトの投稿一覧ページ)では、
HOME

single.php(デフォルトの投稿ページ)では、
HOME > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)


これを、


archives.php(デフォルトの投稿一覧ページ)では、
HOME > 任意の名前(リンクなし)


single.php(デフォルトの投稿ページ)では、
HOME > 任意の名前(リンクあり) > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)


にしたいという、悩みかと思います。

Breadcrumb NavXTでarchive.phpにパンくずを表示させる方法

functions.phpに、コピペして使ってください。
ここまで、シンプルに無駄なくまとめいるのは、僕だけかと思います。

function my_static_breadcrumb_adder( $breadcrumb_trail ) {

  if (is_post_type_archive('post')) { // デフォルトの投稿一覧ページの場合

    $item = new bcn_breadcrumb('任意の名前', null, array('post'));

  } elseif (get_post_type() === 'post') { // デフォルトの投稿ページの場合

    $item = new bcn_breadcrumb('任意の名前', null, array('post'), home_url('archives.phpのスラッグ名/'), null, true);

  }

  $stuck = array_pop( $breadcrumb_trail->breadcrumbs ); // HOME 一時退避
  $breadcrumb_trail->breadcrumbs[] = $item; // 任意の名前 追加
  $breadcrumb_trail->breadcrumbs[] = $stuck; // HOME 戻す

}
add_action('bcn_after_fill', 'my_static_breadcrumb_adder');


出力結果

archives.php(デフォルトの投稿一覧ページ)では、
HOME > 任意の名前(リンクなし)


single.php(デフォルトの投稿ページ)では、
HOME > 任意の名前(リンクあり) > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)


になるかと思います。実務でもゴリゴリ使っていますが、万が一バグなどがありましたら、お気軽にお問い合わせください。



一応ですが、雛形だけですと分かりづらい方もいると思いますので、実例のコードを記載しますね!


ホームページのURLを、『https://renkosaka.com』
投稿の一覧ページ(archive.php)のスラッグ名を、works
パンくずリストに追加したい文字を、制作実績 とします。

function my_static_breadcrumb_adder( $breadcrumb_trail ) {

  if (is_post_type_archive('post')) { // デフォルトの投稿一覧ページの場合

    $item = new bcn_breadcrumb('制作実績', null, array('post'));

  } elseif (get_post_type() === 'post') { // デフォルトの投稿ページの場合

    $item = new bcn_breadcrumb('制作実績', null, array('post'), home_url('works/'), null, true);

  }

  $stuck = array_pop( $breadcrumb_trail->breadcrumbs ); // HOME 一時退避
  $breadcrumb_trail->breadcrumbs[] = $item; // 制作実績 追加
  $breadcrumb_trail->breadcrumbs[] = $stuck; // HOME 戻す

}
add_action('bcn_after_fill', 'my_static_breadcrumb_adder');


出力結果

archives.php(デフォルトの投稿一覧ページ)では、
HOME > 制作実績(リンクなし)


single.php(デフォルトの投稿ページ)では、
HOME > 制作実績(https://renkosaka.com/works/ ← リンクあり ) > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)


というようになります。

解説

そもそも、「なぜ、プラグインを使用しているのにも関わらずに、このような面倒なことをするのか?」と疑問を持つかと思いますが、それは、


Breadcrumb NavXT の、デフォルトの投稿タイプとカスタム投稿タイプの時では、パンくずリストの表示の仕方に違いがあるからです。



デフォルトの投稿タイプの場合

archives.php(デフォルトの投稿一覧ページ)では、
HOME

single.php(デフォルトの投稿ページ)では、
HOME > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)


カスタム投稿タイプの場合

archives-〇〇.php(カスタム投稿一覧ページ)では、
HOME > カスタム投稿名(リンクなし)

single-〇〇.php(カスタム投稿ページ)では、
HOME > カスタム投稿名(リンクあり) > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)


というような違いがあります。


例えば、『HOME』の名前を、『トップページ』にしたい場合は、管理画面からポチポチするだけで、簡単に変更や設定をすることができますが、それ以外の場合は、専用のカスタマイズが必要です。



そこで、Breadcrumb NavXTで用意されている『フック』を使用します。



詳しいカスタマイズの説明は、【Breadcrumb NavXT】階層の追加を行うカスタマイズ方法が参考になりますので、合わせてチェックしてみてください!


今回は、以上です。

SNSでもご購読できます。

コメントを残す

前の記事

次の記事