パンくずリストに階層追加
top > サービス > 税務 こんな感じにしたいけど、
top > 税務 になってしまっているよ。。
間にサービスの階層をはさみたい! どうすれば、いいんだろう困ったな。
アーカイブページのパンクズや、固定ページの下層ページに、カスタム投稿のページを作りたい場合、パンくずリストがうまく表示されませんでした。そこで、カスタマイズで階層追加してみます。
カテゴリページの階層追加
下記のようにブログ一覧を出したい場合、functions.phpに以下のように、追記します。
archive.php
top > ブログ一覧
category.php
top > ブログ一覧 > カテゴリ
single.php
top > ブログ一覧 > カテゴリ > 記事タイトル
// ぱんくずリストの階層 ーーーーーーーーーーーーーーー
function bcn_add($bcnObj) {
if (is_archive() && !is_category())
{
$bcnObj->add(new bcn_breadcrumb('ブログ一覧', null, array('archive'), home_url('/blog'), null, true));
$trail_tmp = clone $bcnObj->trail[0];
$bcnObj->trail[0] = clone $bcnObj->trail[1];
$bcnObj->trail[1] = $trail_tmp;
}
else if (is_category())
{
$bcnObj->add(new bcn_breadcrumb('ブログ一覧', null, array('archive'), home_url('/blog'), null, true));
$trail_tmp = clone $bcnObj->trail[1];
$bcnObj->trail[1] = clone $bcnObj->trail[2];
$bcnObj->trail[2] = $trail_tmp;
}
else if ( is_single())
{
$bcnObj->add(new bcn_breadcrumb('ブログ一覧', null, array('archive'), home_url('/blog'), null, true));
$trail_tmp = clone $bcnObj->trail[2];
$bcnObj->trail[2] = clone $bcnObj->trail[3];
$bcnObj->trail[3] = $trail_tmp;
}
return $bcnObj;
}
add_action('bcn_after_fill', 'bcn_add');
カテゴリのぱんくずリストが、うまく順番が出なくて困りました。
ニュース一覧 > 未分類 > top
何度やっても、この順番、、is_categoryが効かない、、
is_pageで試すと効くのになぜなんだ〜
だいぶ試行錯誤したので、同じように困った人に向けて書いておきます!
●ポイントは、is_archiveが、is_categoryにも反映してしまうようで、
下記のように一度、is_categoryを「!」をつけて、打ち消すとうまくいきました!
if (is_archive() && !is_category())
●そして次に、is_category()で、普通にカスタマイズの設定もします。
Breadcrumb NavXTプラグインのカスタマイズ
top > 〇〇〇〇 > 〇〇〇〇
trail[2] > trail[1] > trail[0]
2→1→0 こういう順番で並んでいるようです。
↓下記のコードで、順番を入れ替えているようです。
$trail_tmp = clone $bcnObj->trail[1];
$trail_tmp ← trail[1](top)
trail[1]を$trail_tmp に入れる
$bcnObj->trail[1] = clone $bcnObj->trail[2];
trail[1](真ん中) ← trail[2](追加した項目,サービス)
trail[2]をtrail[1]に入れる
$bcnObj->trail[2] = $trail_tmp;
trail[2](左) ← $trail_tmp(top)
$trail_tmp(top)をtrail[2]に入れる
複数ページの設定
カスタム投稿のアーカイブページ複数や、シングルページ複数のページの指定方法です。
例えば、上記で税務をしましたが、同じようなページが複数あった場合(相続、行政、など)
またその下層ページ(税務顧問など)に、別の設定をする場合if構文を使えます。
if構文
if {
アーカイブページの設定(項目3つへ)
} else if {
シングルページの設定(項目4つへ)
if構文を使って、アーカイブとシングルの条件を分けます。
top > サービス > 税務 (項目3つ)
top > サービス > 税務 > 税務顧問(項目4つ)
全体のコード↓
function bcn_add($bcnObj) {
if (is_post_type_archive( array('tax', 'jigyo-shokei', 'souzoku', 'roumu', 'gyosei') ) )
{
$bcnObj->add(new bcn_breadcrumb('サービス', null, array('archive'), home_url('/service'), null, true));
$trail_tmp = clone $bcnObj->trail[1];
$bcnObj->trail[1] = clone $bcnObj->trail[2];
$bcnObj->trail[2] = $trail_tmp;
}
else if ( is_singular( array('tax', 'jigyo-shokei', 'souzoku', 'roumu', 'gyosei')))
{
$bcnObj->add(new bcn_breadcrumb('サービス', null, array('archive'), home_url('/service'), null, true));
$trail_tmp = clone $bcnObj->trail[2];
$bcnObj->trail[2] = clone $bcnObj->trail[3];
$bcnObj->trail[3] = $trail_tmp;
}
return $bcnObj;
}
add_action('bcn_after_fill', 'bcn_add');
条件分岐
下記のコードを使って、複数のページを設定できます。
is_post_type_archive( array('tax', 'jigyo-shokei', 'souzoku', 'roumu', 'gyosei')
アーカイブページ(カスタム投稿)の複数設定する条件分岐のコード
is_singular( array('tax', 'jigyo-shokei', 'souzoku', 'roumu', 'gyosei')
シングルページ(カスタム投稿)の複数設定する条件分岐のコード
Breadcrumb NavXTフィルターフック
Breadcrumb NavXTでカスタマイズするときに使うフィルターフック
階層や表示のカスタマイズに使えるそうです。
bcn_after_fill
こちら、参考にさせてもらったページです。
カスタム投稿で作る
Breadcrumb NavXTプラグインはカスタム投稿の場合、通常のパンくずが生成されます。普通の投稿タイプだけがうまく表示されません。なので、普通の投稿タイプを使用せず、カスタム投稿で全て作ってしまうのとカスタマイズしなくて楽です。
最近は私はカスタム投稿ばかりを使うようにしています。その方が同じコードでいけるので、パンくず以外の点においても扱いやすかったりします。