web-dev-qa-db-ja.com

テーマへのプラグインの統合

私はこれを議論しているスレッドを見つけることができなかったので、これを始めます。

私は現在3.1+のためのかなり手の込んだテーマに取り組んでいます、そして手の込んだことによって私はスタイルと通常のフロントエンド機能性に加えて、バックエンドとフロントエンドの両方のためにテーマのコアにプラグインを含めています。そこで、これをもう少し整理しておくために、これを3つの質問に分けました。

  1. プラグインの統合は一般的なやり方ですか?
  2. テーマ/プラグインの自動更新に関して、どのような影響/複雑さがありますか?
  3. 既存の機能を損なうことなく各プラグインを含めるための最も最適化された方法は何ですか?
3
OleVik

1)プラグインの統合は一般的な方法ですか?

あんまり。通常、基本機能を提供するテーマがあります。その後、Twitterのもの、イベントカレンダーなどの特別な目的のためにプラグインでテーマを拡張するだけです。

イモそれは理にかなっています。私は現在、プラグインとして提供されているがバンドルされていないプラグイン(OOPアプローチ)を持つ極度にスリムなテーマに取り組んでいます。これらのプラグインは、ページネーション、パンくず、そしてポストフォーマットのループでさえもテンプレートタグを提供します。私はユーザーが本当にそれを望んでいるなら機能だけを提供するという考えが好きです。例えば。あなたがビジネスのホームページのためのCMSとしてWPを使うならば、コメントシステムはめったに必要とされません、それでなぜテーマはこれを提供するべきですか?このアプローチのもう一つのプロ:あなたがそれを必要としないのであれば、プラグインを無効にしてテンプレートタグをカスタムのものと交換するだけです。

この方法で重要なのは、これらのテンプレートタグを直接配置しないでください。プラグインを無効にしても未定義の関数呼び出しが原因でテーマがクラッシュしないように、フックとフィルタを関数にまとめて使用してください。

2)テーマ/プラグインの自動更新に関して、どのような意味がありますか?

これは私が現在自分自身に質問しているものです。テーマとプラグインの両方の更新をチェックする大規模なルーチンについて考えましたが、全体的には意味がありません。あなたが単に組み込みのアップデートシステムを使うのであればもっといいです(あるいは公式リポジトリでホスティングしていないのであればカスタムクラスを使うのもいいでしょう)。理由:あなたは本当に更新する必要があるものだけを更新します。これは時間とエネルギーをいくらか節約するので、私はそれを「より環境に優しい」やり方と呼ぶことさえします。

3)既存の機能を壊さずに各プラグインを含めるための最も最適化された方法は何でしょうか?

あなたのケースでは既存の機能と正確には何ですか?

関数名

WordPressはリクエストに応じて約2.500の関数を読みました。そのため、if ( function_exists('whatever') )に質問することは決して良い考えではありません。固有の名前を使用してください。 @Jan Fabryは良い考えを持っていました。彼はここで彼のすべての答え関数の前にwpseとQの例の番号を付けました:wpse14277_function_name()。 4桁または5桁の数字と英字の組み合わせは、おそらく一意のままです。あなたがあなたのテーマに50個のカスタム関数を持っていて、リクエストごとに2.500に対してそれらを質問していると想像してみてください(あなたは自分で数学をすることができます) - それは高性能ではありません。
編集:
プラグインがアクティブかどうかだけを知りたい場合は、 is_plugin_active() 条件タグを使用してください。

2
kaiser
  1. はい、functions.phpに組み込んだものは技術的にプラグインに再利用して配布することができます。同じことが逆に言えます。
  2. バージョニングの側面を少し異なる方法で処理する必要があります。プラグインでは、変更を加えるたびに、そのプラグインだけを更新する必要があります。テーマでは、少しの変更でテーマ全体が更新されます。テーマの更新が利用可能になるとWordPressがプラグインを警告するのと同じようにユーザーに警告するので、これは大したことではありません、実際には、実際にはもう少し便利かもしれません。
  3. それらを一意にするために関数の名前を変更してください。そうしないと、関数が再宣言されたときにクラッシュすることになります。あなたのテーマ名を関数の前に付けるのが一番簡単です。 plugin_function()はtheme_plugin_function()になります。

Functions.phpが少し大きくなり、整理されていないことがわかった場合は、テーマを整理しやすくするためにテーマ内にさらに.phpファイルを作成してから、include_once( 'path/filename.php')を使用してfunctions.phpにそれらのファイルを呼び出します。

1
Drew Gourley

明確にするために、あなたはすでにスタンドアロンのフル機能のプラグインとして存在するコードを含めることについて話していますか?

プラグインの統合は一般的なやり方ですか?

テーマに一般的なコードを統合することは一般的な方法です。しかし、通常のプラグインで一般的に実現されている、過剰な量のコードと機能を束ねることは、機能拡張としてユーザーをあなたのテーマに閉じ込もうとしていると見なされます。

テーマ/プラグインの自動更新に関して、どのような影響/複雑さがありますか?

更新はすべてを新しいバージョンで上書きします。

既存の機能を損なうことなく各プラグインを含めるための最も最適化された方法は何ですか?

これは、プラグインが何をするか、どのようにコーディングされているか、テーマが機能するために必要なのか、それとも単なる追加機能なのかに大きく依存します。

1
Rarst