web-dev-qa-db-ja.com

機能を追加するために既存のプラグインを編集するのは得策ですか?

Wordpressプラグインに比較的小さな機能を追加する必要があります。プラグインを直接編集するか、プラグインを完全に廃止して別のサイトからPHPコードを再利用するかを選択できます。そのような小さな変更のためにWordpress以外のPHPコードを再利用するのはばかげているように思われ、私はプラグインを編集するときに使用するPHPの数行を持っています。私の質問は、プラグインを編集するのは良い考えですか?

テーマを編集するとき、編集が古いコードに直接行われると、テーマが更新されるときに変更が失われることを私は知っています。これはプラグインでも起こりますか?これを回避する方法はありますか?

変更がどれほど複雑か疑問に思う人のために、簡単に説明します。私が持っているクライアントは、フォーム送信がディーラーとユーザーに行くことを望みます。しかし、ユーザーのEメールアドレスによっては、状況によっては( ".gov"や他のいくつかのエンディングで終わっているなら...はい、これは最善の考えではないことを知っています。クライアントはその電子メールが他の人に届くことを望んでいます。当然、これはプラグイン内のいくつかの小さなPHP行で解決できますが、プラグインにはユーザーから送信されたコンテンツに基づく「条件付き受信者」の機能はありません。だから私はこのサイトだけのためにその機能を追加したいのですが(それがすぐにできるなら)または私はそれが最初に直すより多くの問題を引き起こすように思えるまっすぐなphpにプラグインを置き換えたいです。時間が最も重要です。手伝ってくれてどうもありがとう!

6
Rambo8000

あなたが自問しなければならない最も重要な質問は、私がテーマまたはプラグインの著者ですか?。答えが「はい」であり、プラグインまたはテーマの維持に責任がある場合は、先に進んで変更し、必要に応じて修正してください。

答えが「いいえ」の場合、単純なドット.のように小さなことでも、変更を加えるべきではありません。 WordPressコアファイルについても同様です。あなたが述べたように、単純な理由は、テーマ/プラグイン/コアが更新された場合、willテーマ/プラグイン/コアに対して行ったことをすべて失うことです。

この追加機能を使用して、独自の小さな 機能プラグイン を作成することをお勧めします。それは迅速かつ簡単であり、あなたがそれを自分でしない限り上書きされないので、後であなたに多くの涙を保存します。

5
Pieter Goosen

一般的には、プラグインを変更したくはありません。次回プラグインを更新するときには、変更内容を失うことになるからです。子テーマを設定できるテーマでは、少し異なります。

プラグインがwp_mail()関数を使って電子メールを送信している場合は、wp_mailフィルタを使って受信者を変更しようとするかもしれません。

問題を克服するためにあなた自身のプラグインを書くようにしてください。

これはそのようなプラグインの例です(未テスト):

/* Plugin Name: Change recipients for .gov emails */

add_filter( 'wp_mail', 
    function ( $args ) {

        // Check if the recipent's email ends with .gov         
        if( 'vog.' === strtolower( substr( strrev( $args['to'] ), 0, 4 ) ) )
        {
            // Replace it with a new email address:
            $args['to'] = '[email protected]';
        }

        return $args;
    }
);

プラグインによって提供される追加のフックが必要な場合があります。

5
birgire

私は数年間Wordpressを使ってきた私たちの誰かが何らかの段階でこれをやることで有罪となったと思います。元の作者によってサポートされなくなったプラグインを修正しなければならなくなり、それ以降のバージョンのWordpressとの互換性の問題がいくつかありました。

オリジナルの作者ではない既存のプラグインを編集することが受け入れられる状況があります。

  • プラグインはメンテナンスまたはサポートされなくなりました
  • プラグインはあなたのサーバー/サイトを危険にさらす可能性があるいくつかの明白なセキュリティ問題を抱えています、そしてあなたは更新を待ってプラグインを必要としたくありません

これらは、プラグインを編集することが許容できる場所として私が考えることができる唯一の2つの状況です。理想的な世界では、すべてのWordpressプラグイン作者がWordpressのフック/フィルタ機能を使用するので、プラグインファイルを編集せずに簡単に拡張し変更することができます。フックやフィルター用。

プラグインにさらに機能を追加する必要がある場合、私の最初のアドバイスは、独自のプラグインを作成して自分で機能を作成することです。ただし、Javascriptライブラリを削除して自分自身をプラグインに含めることが必要な場合もありますが、作成者はWordpress関数を使用せずにインクルードをインライン化することにします。これは、ファイルを1つまたは2つ編集する必要があるため、このような状況ではトリッキーになる可能性がある場所です。

あなたがプラグインファイルを編集する必要がある状況では(そしてこれは他のすべてのオプションを調べた後の最後のケースのシナリオです)、あなたはプラグインディレクトリにモディファイファイルを保存するべきです。ファイルが変更された、行番号と私は時間があれば、私は私がやったことを一覧表示します。更新する必要がある場合はファイルを比較して、何が変更されたのかを確認できます。

最後の手段は理想的な方法ではありません。欠点があり、プログラミングの法則にかなり反します。しかし、私が述べたように、プラグインの記述が適切でない場合や、テーマやカスタムプラグインの上書き/拡張が簡単にできない場合は、プラグインファイルの編集が必要になることがあります。

2