以下、WordPressとpluginでもカバー出来ないSEO対策への対策(All in One SEO Pack編)の続編です。
カスタムタクソノミー、カスタムフィールド、カスタムのリライトルールを使って、かなり特殊なサイト構造に対応完了!やった、もう一息で完成!というところで、パンクズ表示が、他のカスタマイズに追いつけてない事に気がつきます…
でも、全体の数パーセントのページの為だけに、使用中のパンくず生成pluing『Breadcrumb NavXT』とさよならして、自作codeへ切り替えるには、時間が全然足りません…
でも、きっと、またhookを見つけてちょちょいといける筈!だったのですが…
『Breadcrumb NavXT』のhookを検索した、けど、、、
plugin内を検索してみると、『apply_filters』で25件、『do_action』で22件の検索結果。
これだけあればどうにかなるでしょ、と、コードの中を物色し始めますが、結構複雑です…
ご本家のドキュメントも読んでみましたが、どのhookも、このpluginをきちんと理解した上で、それなりのコードを書かないと使えません。
これだと、デザイナーさんに引き継げなくなりそうな予感。む〜〜〜。
パンクズ画面出力用関数 bcn_display() をそのまま利用
先のご本家ドキュメントを改めて見ると、
bcn_display($return = false, $linked = true, $reverse = false)
とありました。つまり、bcn_display(true)とすれば、画面に出力せずに生成済みのパンクズのhtmlを取得出来るようです。これを自作の関数でラップして、アレンジしてから出力すればよさそう。
と、その前に、パンクズの各要素の間に挟まるセパレーターは、変更になる可能性があるので、保存済みのpluginのオプション値から取得したほうがよさげです。
Breadcrumb NavXTの管理画面、Breadcrumb NavXT Settingsの『Breadcrumb Separator』のinputタグをみてみると、
name="bcn_options[hseparator]"
となっているので、きっと、bcn_optionsというoption名でDBに連想配列で色々と一緒に保存されてる筈。試しに、以下のコードを走らせると、設定済みのセパレーター『 > 』が表示されてビンゴ!
これをつかってhtmlを分解すれば、簡単にアレンジが効く筈です。
pluginのバージョンアップでoption名や配列のkeyに変更が入る可能性がなくはないですが、これは、このpluginの歴史で最古のオプションの一つのようですので、早々は変わらないでしょう、と楽観しておきます。
分解して、アレンジして、合体
自作関数でラップしてみます。サンプルコードとしては抽象的すぎてコピペでは使えませんが、やってる事の簡単さはご理解頂けるかと。
あとは、テーマ内で、bcn_display()と書いているところを、my_bcn_display()に置き換えれば良いだけですね。
ちょっと遠回りしたので、所要時間、1時間とはいきませんでしたが、これで、デザイナーさんでも後でメンテアンス出来るコードに仕上がった筈です。
実は、他のプラグインでも出力を抑制するパラメータのあるものがちょいちょいあるので、同じ手法が使えます。
皆さん、色々チャレンジして、愛着のあるプラグインと、さらに懇ろな関係になっちゃってください!