アップグレード機能を維持しながらプラグインをカスタマイズする方法


8

現在、WordPressプラグインの1つに対するメジャーアップデートに取り組んでいます。

プラグインを使用すると、ユーザーはいくつかの利用可能なスキンから選択できます。かなり頻繁に、カスタムスキンの作成を求められます。このスキンがアップグレード時に削除されないようにするには、WordPressフックを使用してプラグインの自動更新を無効にする必要があります。プラグインを更新できるようにしたいので、これは明らかに理想的ではありません。問題は、WordPressが更新を処理する方法です。プラグインフォルダーを削除し、新しいバージョンをインストールするだけです。したがって、実際には古いバージョンの一部ではなかったファイルを削除します。

現在、私がそれを回避できる唯一の方法は、2つのスキンフォルダーを持っていることです。1つはプラグインフォルダーに、もう1つはアップロードフォルダーにあります。これが本当にこれをユーザーに提供できる唯一の方法ですか?

回答:


4

多くのプラグインは/wp-content/custom-plugin-folder/、カスタマイズされたプラグインデータを格納するために使用します(WPTouchが思い浮かびます)。

定数WP_CONTENT_URLWP_CONTENT_DIR ドキュメントを使用して、フォルダーの存在を確認し、使用可能なスキンを取得します。

直接この質問に関連していないが、次の記事では、翻訳を検索するためのプラグイン/テーマの重要性を説明して最初wp-content/languagesフォルダの前に、独自のパッケージのロード.moファイルを。これは一読の価値があり、うまくいけば、次のリリースでその概念を適用してください:)

WordPress言語ファイルを正しい方法でロードするプラグインに同梱されている言語ファイルをロードする前に、WP_LANG_DIRからカスタムユーザー言語ファイルをロードすることが重要であることを指摘したいと思います。同じドメインに複数のmoファイルがロードされている場合、最初に見つかった翻訳が使用されます。このようにして、プラグインによって提供される言語ファイルは、ユーザーが翻訳していない文字列のフォールバックとして機能します。
http://www.geertdedeckere.be/


7

もう1つの方法は、ユーザーに独自のサブプラグインを追加させることです。たとえば、スキンを取得するコアプラグインのコードは次のようになります。

function get_available_skins() {
    $skins[] = '/includes/default-skin.css';
    $skins[] = '/includes/2012-skin.css';

    return apply_filters( 'get_available_skins', $skins );
}

次に、ユーザーはあなたのプラグインの横に配置するカスタムプラグインを作成できます(個別にアクティブ化されるため、更新に干渉しません)。

add_filter( 'get_available_skins', 'my_custom_skin' );
function my_custom_skin( $skins ) {
    $skins[] = '/my-custom-skin.css';

    return $skins;
}

これは、WordPressがフックを使用して拡張可能にする方法とまったく同じです。車輪を再発明しないでください。

(明らかに、使用しているプラ​​グイン、カスタムスキンの外観、コーディング方法がわからないので、上記のコードは、リファクタリング方法のモデルとしてのみ使用する必要があります。独自のコード。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.