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