久しぶりの更新です。
最近は、また忙しくてかなり滞っておりました。でも、個人ブログだから全く何も問題ないですね(笑
で、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); ここでハマると思うので忘れないようにメモしておくことにした。