・Breadcrumb NavXTを使っているが、archives.php (デフォルトの投稿一覧ページ)には、トップページのリンクしか追加されないのだけど…
・デフォルトの投稿ページのパンくずリストに、archives.php へのリンクを設置したいな!
という方に向けて、記事を書きました。
【この記事の信頼性】
当ブログ(RENBLOG)の編集長である僕は、これまでホームページ制作に約40サイト以上、携わらせて頂いております。
また、当ブログ(RENBLOG)は、記事数は少ないものの、数ページ10以内を獲得している為、割と信頼できるのではと思います。
【本題に入る前に、悩みの再確認】
「結論を早く知りたい!」という方が、多いと思いますが、まずこの記事を読んでいる読者と、今僕が書いている内容にずれが無いか確認させてください。
というのも、過去に僕もこの件で悩んだときに、そもそも検索エンジンに何と検索したらよいか分からずに、丸一日ムダに時間を使ったからです。
おそらく、Breadcrumb NavXTのパンくずリストでアーカイブページのみエラーが出るで出ている悩みの通りに、
archives.php(デフォルトの投稿一覧ページ)では、
HOME
single.php(デフォルトの投稿ページ)では、
HOME > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)
これを、
archives.php(デフォルトの投稿一覧ページ)では、
HOME > 任意の名前(リンクなし)
single.php(デフォルトの投稿ページ)では、
HOME > 任意の名前(リンクあり) > 投稿のタイトル(パーマリンク設定 = 投稿名 の場合)
にしたいという、悩みかと思います。
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】階層の追加を行うカスタマイズ方法が参考になりますので、合わせてチェックしてみてください!
今回は、以上です。