web-dev-qa-db-ja.com

フックもプラグイン可能な関数もないプラグインを修正するための最良の方法は?

フックがなくプラグインできないプラグインの中のいくつかの機能にいくつかの変更を加える必要があります。

私の考えは、私が変更した関数をif ( ! function_exists())でラップし、私の変更を別のプラグインに移動することでした。プラグインを更新する必要があるときはいつでも、if ( ! function_exists())ラッパーを再度追加するだけです。

なぜこれが悪い考えであるのか、そして私が代わりにすべきことを教えてください。

1
dallen

あなたが使用しているプラ​​グインはあなたやあなたのクライアントにとって非常に重要であるように思えます、そしておそらくプラグイン自体は適切なサポートで定期的に更新されるでしょう。

私は間違いなく作者に連絡して、プラグインに起こりうる変更について話し合うでしょう。変更が建設的な変更であり、プラグインにある程度の有用性をもたらす場合、その作成者が近い将来のリリース/アップデートで変更を実装しない理由はわかりません。

主に、もしあなたの変更が現在のプラグインの範囲外であるなら、将来のリリース/アップデートで必要とされるところに適切なフィルタを追加することを提案して作者に依頼することができます。

しかし、はい、私は他の解決策を調べる前に、そのような種類のサポートのためにプラグイン作者から始めるでしょう

2
Pieter Goosen

私は、フィルタを使わないプラグインの一例さえ考えられません。ほとんどすべてのプラグインはデータを格納するためにオプションを使用しているため、オプション関連のフックを使用しています。

あなたのプラグインはたぶん多くのアクションとフィルタを使っています、それらはその高レベルのコードにはありません、しかしそれはあなたがプラグインの振る舞いを変えるためにそれらを使うことを妨げません。

もう1つの可能性は、その生成に影響を与える方法が他にない場合は、出力バッファリングを使用して出力を操作することです。

0
Mark Kaplun

操作したいプラグインがクラスとして存在する場合は、クラス内の__call関数で上書きすることができます(オリジナルを拡張します)。ファイルを編集できなくなります。あなたは他のプラグインに追いつくためにあなたのプラグインを書き直さなければならないかもしれません、しかし私は著者の無視を考えると、プラグインのクラスを拡張することがあなたの最良の選択肢だと思います。

0
Caleb