パンくずリストに階層追加

WordPress
スポンサーリンク

パンくずリストに階層追加

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】階層の追加を行うカスタマイズ方法 | SEO対策なら株式会社ペコプラ
WordPressのパンくずリストを生成し表示するプラグイン「Breadcrumb NavXT」を用いたカスタマイズの方法を紹介します。新たな階層を追加する方法をサンプールコード付きで解説しています。
タイトルとURLをコピーしました