Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

WordPressとpluginでもカバー出来ないSEO対策への対策(Breadcrumb NavXT編)

以下、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時間とはいきませんでしたが、これで、デザイナーさんでも後でメンテアンス出来るコードに仕上がった筈です。

実は、他のプラグインでも出力を抑制するパラメータのあるものがちょいちょいあるので、同じ手法が使えます。

皆さん、色々チャレンジして、愛着のあるプラグインと、さらに懇ろな関係になっちゃってください!