前提・実現したいこと
私は、wordpressをベースとしたCMSシステムの提供を行なう企業に務めています。
今回wordpressコアのバージョンアップを行うにあたって、現環境のwordpressのソースコードをかなり書き換えていたため、
このバージョンアップ改修を期に今後はコアへの直接の改修を無くし、独自に作成するプラグイン内でフックを使って既存の仕様を再現できるよう実装を行なっています。
そこで設計について皆様の意見をお聞かせ頂きたいと思います。
現行のプログラムでは、独自プラグイン内でwp-includes\pluggable.php内に定義されているプラガブル関数を使いたい独自関数があるため、pluggable.phpの読み込み前に必要な関数のソースコードをそのまま独自プラグイン内にコピーしてしまっています。
これによって、対象のプラガブル関数は利用できるようになっていますが、このままではこの先のwordpressバージョンアップ時にpluggable.phpの最新のソースより古いソースの関数が使われる可能性があります。
『バージョンアップのたびにコピー先の関数のソースも更新するしか無い』と考えていますが、皆様ならどう対応しますか?
ご意見頂けますとありがたいです。
なお、下記のコードはwordpressを使っていない方でも理解できるように雑に簡略化して書いたコードです。
以下追記
分かりにくかった為、箇条書きでまとめてみました。
■前提
1.wordpressの仕様として、各プラグインディレクトリ内(mu-plugin,plugin)のphpが読み込まれてから『pluggable.php』が読み込まれる。この時、pluggable.php内では既に定義済みの関数を定義しない様に実装されている。
2.上記プラグインディレクトリ内のphpの中で、『pluggable.php』内の関数を使いたい。(該当ソースの『myOverride.php』に定義されているfunction aにあたります。)
3.『pluggable.php』などWordpressのコアファイルに事前に実装されているものは、プラグインディレクトリ内を除いて、ソースの改変をしたくない。(今後のバージョンアップ時の保守に影響するため)
■検討した内容
『pluggable.php』に記載されているfunction aのソースをプラグイン内のファイルで先に定義しようと考えました。
しかし、プラグイン内でfunction aを使いたいという問題が解決する代わりに、今後Wordpress自体の更新により『pluggable.php』内のfunction aが更新された場合、そのソースをプラグイン内のfunction a定義箇所にマージする必要が発生します。
可能であれば、Wordpressの更新時(『pluggable.php』のfunction aに変更があった際)にプラグインを修正することは避けたいです。
これは個人的な考えですが、『pluggable.php』の関数を予め定義できる理由として、『事前に使いたい為』ではなく『メソッドの挙動を変えたい為』の仕様と考えており、プラグイン内で利用したいという理由で同一のソースコードをプラグイン内でも定義するというのは、良いやり方ではないと考えています。
該当のソースコード
php
1// myOverride.php 2/**** 3 * pluggable.php内の関数定義をここでインクルードできれば、コアのバージョンアップ時にこのファイルを改修する必要がない 4 * ただし全ての関数を読み込みたい訳ではないのでpluggable.phpのインクルードではなく、function aの定義のみ読み込みたい 5 ****/ 6function a(){ 7 echo 'func a ver1.0'; 8} 9 10include_once('pluggable.php'); 11 12// ------------------------------------------------- 13// pluggable.php 14if(function_exists('a')){ 15 function a(){ 16 echo 'func a ver1.0'; 17 // echo 'func a ver1.1'; pluggable.phpが更新されて1.1になったらmyOverride.phpも更新する必要がある 18 } 19} 20 21if(function_exists('b')){ 22 function b(){ 23 echo 'func b ver1.0'; 24 } 25}
回答1件
あなたの回答
tips
プレビュー