ウィジェットのカスタマイズをするプラグインを作ってみる – その3

前回に引き続きプラグイン作成の話。

土曜から始めて、はや5日。
ようやく形になった。
土日は管理画面に表示したリンクをクリックしても、管理画面に戻ってこれないと言う
謎のトラブルに巻き込まれたが、原因不明のまま解決した。
たぶん、リンク先の編集のどこかでゴミが入っていて、URLが正しく出力されていなかったのだろう。
イチからやり直したら、あっさり解決した。

悩んだのはウィジェットエリアを定義する方法。
最初はグローバルに設定されているウィジェット定義の変数を編集しようかとも思ったけど、
あまりにスマートでないので、最終的にウィジェットエリアを定義する関数
register_sidebar」をコールしてやる事に。
そうする事で、ウィジェット前後のタグとかをイチイチ入力しなくても
デフォルト値を設定する事が可能となった。
ま、よくよく考えれば、定義するための関数が最初から用意されているんだから
それを呼べばいいと言う単純なお話。
削除も同様に「unregister_sidebar」を呼ぶ事に。

もうひとつ悩んだ点。
通常、ウィジェットエリア定義はfunction.phpにベタで書く。
function.phpはどの画面が呼び出されても実行されるので、通常はそのタイミングで定義が完了する。
その内容をどこかで上書きしてやる必要がある。
そこで、「register_sidebar」関数内で発生する「register_sidebar」アクションフックをフックしてやり、
DBに登録された定義内容で上書きしてやる事にした。
問題は、DBの登録内容で再定義する際にも、「register_sidebar」アクションフックが発生するため、
再帰的な無限ループに陥ってしまうこと。
しょうがないのでグローバルなフラグを作り、
プラグインによる再定義中はフックに引っかかっても再定義処理を実行しないようにした。
この辺、もーちょいうまくやる方法がありそうだけど・・・。

後はサイドバー側でページ毎にウィジェットエリアを定義するようにしてやるだけだ。
明日、明後日は飲み会だから、続きは土曜かな。

寝よ寝よ。

コメント

タイトルとURLをコピーしました