Breadcrumb NavXTのリンクカスタマイズ

久しぶりの更新です。

最近は、また忙しくてかなり滞っておりました。でも、個人ブログだから全く何も問題ないですね(笑

で、Breadcrumb NavXTのリンクカスタマイズ でハマったので覚書!

あるカスタム投稿で、クエリパラメータがあったらそれを子ページとして、本来のページを親みたいにするという階層実現です。

パンくずのフックで bcn_after_fill なるものがあって、そこでゴニョゴニョします!
add_action('bcn_after_fill', 'my_filter_breadcrumbs_after');

ですね。

まあ僕は、

add_action('bcn_after_fill', function(){
...
});

ですけれどもね。

つーことで・・・・
$_GET[‘code’]があったら、さもそれが1ページのように見せます。

カスタム投稿だと、
ホーム / 投稿名 / 投稿ページ名 / クエリパラメータで何かしたヤツ
みたいないパンくずリンクです。

こうです!

/**
 * パンくずリンクのフック
 */
add_action('bcn_after_fill', function ($bcnObj) {
    if (count($bcnObj->trail) > 0) {
        $itemCode = htmlspecialchars($_GET['code']);
        if (!$itemCode) return $bcnObj;

        global $post;

        // ここで$itemCodeを使ってカスタムフィールド取得するとかの処理

        if (!$itemCode) return $bcnObj;

        // 独自ページのパンくず生成
        $trail_add[0] = clone $bcnObj->trail[0]; // オブジェクトを作るのは面倒なのでクローンを用意
        $trail_add[0]->set_title($itemCode);  // タイトルを設定 ゴニョゴニョ処理して別のものを突っ込んでもOK牧場!
        // Breadcrumb NavXTで、該当ページにもリンクを貼っている場合
     if ($bcnObj->opt['bcurrent_item_linked']) {
            $query = ['code' => $itemCode];
            $seturl = add_query_arg($query, get_permalink($post->ID));
            $trail_add[0]->set_url($seturl);
        } // Breadcrumb NavXTで、該当ページにリンクを貼っていない場合 
     else {
            //親ページをリンク付きに変更
            $bcnObj->trail[0]->set_title(get_the_title($post->ID));
            $bcnObj->trail[0]->set_url(get_permalink($post->ID));
            $bcnObj->trail[0]->set_template($bcnObj->opt['Hpost_post_template']);
            $bcnObj->trail[0]->set_linked(true); // ← !!!!!こいつが重要!!!!! ググって見つけたページはほとんどコレがなかった(泣
        }
        $bcnObj->trail = array_merge($trail_add, $bcnObj->trail);
    }

    return $bcnObj;
});

ていう感じで、たぶん $bcnObj->trail[0]->set_linked(true); ここでハマると思うので忘れないようにメモしておくことにした。

WordPressやMT、WebRelease2、PHPなどのコーディングが仕事の中年おじさんです。 趣味でバンド(ギター&ボーカル)もやっていて、海外ドラマ(特にSFモノ)が大好きです。 いろいろまとめておくためにブログを立ち上げまっす!MASU!。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA