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

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」を用いたカスタマイズの方法を紹介します。新たな階層を追加する方法をサンプールコード付きで解説しています。

カスタム投稿で作る

Breadcrumb NavXTプラグインはカスタム投稿の場合、通常のパンくずが生成されます。普通の投稿タイプだけがうまく表示されません。なので、普通の投稿タイプを使用せず、カスタム投稿で全て作ってしまうのとカスタマイズしなくて楽です。

最近は私はカスタム投稿ばかりを使うようにしています。その方が同じコードでいけるので、パンくず以外の点においても扱いやすかったりします。

タイトルとURLをコピーしました