web-dev-qa-db-ja.com

テーマの一部としてプラグインを含めるためのベストプラクティスは?

私は別のプラグインとして開発したいくつかの機能を含むテーマに取り組んでいます(私はそれらを個別にリリースしたいと思っているので)。

テーマコアの一部としてこれらのプラグインを含めたいのですが、一部の開発者はテーマとともにプラグインをファイルまたはサブディレクトリとして含めることに気付きました。プラグインリポジトリの場合は、テーマの場合は1つですが、できれば避けたいと思います。

テーマの一部としてプラグインを含めるためのベストプラクティスは何ですか?

5
Tom

それらを個別にリリースする予定の場合は、それらを個別にリリースして、両方をWPリポジトリでホストするようにしてください。これにより、システムをリモートで更新し、人々が最新のシステムを使用できるようになります。

次に、テーマで、 is_plugin_active() を使用してコマンドをフィルタ処理します。プラグインを必要とするテーマ機能がある場合は、is_plugin_active()を使用して、機能の使用とプラグインをインストールするようにユーザーに促すことを動的に切り替えます。

心に留めておくべき重要なことは、プラグインがインストールされていなくてもあなたのテーマはまだ動作するはずであるということです。それは同じ豊富な機能セットを持っている必要はありません。他のプラグインの1つを削除または無効にすると決定した場合は中断します。

あるいは、特定のプラグインがそれほど長い間変更されないことをご存知なら(私はいくつかのプラグインを使用します特定のWPフィルタを追加/削除しますあなたはあなたのテーマでPHPファイルを/libraryディレクトリにドロップすることができ、そしてinclude()ファイルをfunctions.phpに入れることができます。その後、機能はデフォルトで有効になります - トレードオフは、あなたが現在あなたがプラグインの2つのバージョンを保守しているということです(あなたが最初の質問で述べたように)。

5
EAMann

基本的に3つの可能性があります。

  • テーマとプラグインの両方がインストールされている。
  • テーマのみがインストールされています。
  • プラグインのみがインストールされています。

更新される可能性が高いものを考慮に入れてください。

  • リポジトリホストのプラグイン - おそらく。
  • リポジトリ主催のテーマ - おそらく。
  • リポジトリ主催のテーマやプラグインではない - ありそうもない。
  • 子テーマ - 非常にありそうもない(リポジトリでホストすることはできません、それはエンドユーザによってカスタマイズされることを意図しているので手動での変更のマージ)。

そのため、全体として、プラグインが存在しない場合は、コードを同じにして(同一ではないにしても同じように)コードを条件付きでロードすることをお勧めします。それが今ではプラグインは更新するのがより簡単でより一般的であるので。

明らかにthemeはバンドルされたあるいは別々のプラグインを利用することができなければならず、pluginはテーマからのコードにまったく依存するべきではありません。

最善の(しかし複雑な方法)拡張をコンテキストに依存しないもの(別名フレームワーク)として構築し、カスタムローダーを使ってバージョンをチェックし、利用可能な最新のものをロードすることです。フレームワークアプローチの実際的な例については、 scbFramework を参照してください。両方とも別々のプラグインとして配布され、他の複数のプラグインで使用されています。

2
Rarst