車輪の再発明をしたくないあなたは、パンくずリストを生成するために Breadcrumb NavXT プラグイン を使っているかもしれません。
これはとても便利なプラグインで、ほとんど何もしなくてもパンくずリストを生成してくれますし、やろうと思えば非常に細やかな設定も可能です。
フィルターフックも沢山配置されていて、正に思い通り・・・とはいかないものです。
今のところ、階層をひとつ飛ばしたいときにどうしたらいいか分からないのです。
ソースをたどってフィルタなども探してみたのですが、どのフィルターで何を変えればいいのか、そもそも出来るのか、よくわかりません。
ひとつ飛ばせないのなら、その階層をリンクなしにして、テキストだけ出力したいとこです。
それについては、このプラグイン作者のサイト(mtekk.us “Remove the Link in a Breadcrumb”)にサンプルコードがありました。
特定の固定ページの場合にリンクを出力させません。
そのソースを引用してみます。
add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_stripper', 3, 10); function my_breadcrumb_url_stripper($url, $type, $id) { if(in_array('post-page', $type) && (int) $id === MYPAGEID) { $url = NULL; } return $url; }
なるほど、NULL を返せばいいんですね。NULLを。
私は null と小文字で書く派ですが、どちらでも同じです。
これで・・・消えません。
リンクが消えないんです。
プラグイン作者のサイトに書いてあるとおりにやって消えないとはどういうことでしょうか。
この、April 22nd, 2016に書かれた時点のバージョンとは、ソースコードが変更されている様子です。
2019/3/4 時点のバージョン6.2.1では該当フィルターフックの箇所は以下のようになっています。
/** * Function to set the internal URL variable * * @param string $url the url to link to */ public function set_url($url) { $url = trim($url); $this->url = apply_filters('bcn_breadcrumb_url', $url, $this->type, $this->id); //If the URL seemed nullish, we are not linked if($this->url === '') { $this->linked = false; } else { $this->linked = true; } }
11行目をご覧ください。
===
という比較演算子が使用されていて、変数の型も同じでないと true になりません。
要するに、null
ではなく''
でないとリンクが無くなりません。
あと、先ほど引用したサンプルコードでは、add_filter
の引数の順番をうっかり間違っています。
サンプルコードは以下のようにお書きください。
バージョン6.2.1においては。
add_filter('bcn_breadcrumb_url', 'my_breadcrumb_url_stripper', 10, 3); function my_breadcrumb_url_stripper($url, $type, $id) { if(in_array('post-page', $type) && (int) $id === MYPAGEID) { $url = ''; } return $url; }
だまされてしまった人が問題を解決できるように置いておきます。