WordPressで欲しい機能のためにプラグインを導入したものの、微妙に要件を満たしてないという問題が発生。
受託開発のサイトの場合、様々な要望に対応するため、wp_tag_cloud()のようにHTMLタグも吐き出されるテンプレートタグでは不便なことがある。そういう場合はPHP関数形式のタグがあれば便利なのだが、特にプラグインではPHP関数形式のテンプレートタグがない。
3時間悩んだ末の解決策が、プラグインファイルのクラスを継承して新しいクラスを作り、PHP関数形式で値を返すメソッドを作成するという苦肉の策。
class 苦肉の策クラス extends プラグインで実装されているクラス { function 勝手に追加したメソッド() { 処理 } } $変数に入れます = new 苦肉の策クラス(); function メソッド呼び出し用関数() { global $変数に入れます; return $変数に入れます->勝手に追加したメソッド(); // ↑今回はIDを配列で返すようにしてみました。 }
これでとりあえず必要な関数はできたので、めでたくテンプレートの中で使えるようになったわけだが…
上記のクラスもテンプレートに書いてあるという不格好さ。
まぁとりあえずこうしておけば、プラグインがアップデートしたときでも、もとになるクラスが消えてなければ大丈夫だと思うのだが。もっとスマートなやり方がないもんかな。
—
【追記】
index.phpでうまくいったと思ったら、他のテンプレートではFatal error。
もう少し考える必要がありそうだ。
—
【追記2】
結局プラグインファイルに上記のクラスを追記。何がいけないのか???