テーマの統合を提供するWordPressプラグインを開発するためのベストプラクティスに関する意見を聞きたいと思います。
この質問をするときに意味をなすために、私が興味を持っているシナリオの仮説的な例から始めましょう。「Discography」というプラグインを作成するとします。ディスコグラフィーは、「バンド」、「アルバム」、「トラック」の3つのカスタム投稿タイプを登録します。プラグインは、各投稿タイプの詳細を提供するメタボックス、および各投稿タイプを整理するためのカスタム分類も提供します。これらの投稿タイプは、Posts 2 Postsプラグインと結びついています。管理者内で、ユーザーは新しいバンドを追加できます。新しいバンドはアルバムに関連付けられ、アルバムはトラックに関連付けられます。すべてのトラックには、メタボックスと分類法を介して他の多くのデータが追加されます。
さて、このプラグインでユーザーがこの情報を入力できるように管理者を設定するだけでは望ましくありません。データのデフォルトの表示を提供したいと思います。より高度なユーザー/開発者であれば、この管理者のみで十分です。彼女がそのデータを取得してテーマで使用するのは簡単です。ただし、一部のデフォルトビューがなければ、このプラグインはほとんどのユーザーにとって役に立たないでしょう。この例では、次のようなものを表示できます(括弧は、テンプレート階層の順に情報を表示する方法を示しています)。
- バンド(single-prefix-band.php、single.php、index.php、ショートコード)
- アルバム(single-prefix-album.php、single.php、index.php、ショートコード)
- トラック(single-prefix-track.php、single.php、index.php、ショートコード)
- バンドリスト(template-band-list.php、page-band-listing.php、page- {id} .php、page.php、index.php、ショートコード)
- アルバムリスト(template-album-list.php、page-album-listing.php、page- {id} .php、page.php、index.php、ショートコード)
- アルバムタイムライン(template-album-timeline.php、page-album-timeline.php、page- {id} .php、page.php、index.php、ショートコード)
デフォルトのテンプレートファイルには、各投稿タイプに必要なすべての情報が表示されないため、これらの投稿タイプにはデフォルトのプレゼンテーションがあることが重要です。たとえば、Twenty Elevenテーマでは、デフォルトで、アルバムの名前、カテゴリ、説明、投稿日のみが表示されます。アルバムにはあまり役立ちません。バンド、リリース日、レコードレーベル、アルバムバージョン、トラックなどを取り込む単一の投稿テンプレートを提供したいと思います。プラグイン開発者として、私はそれを提供することが重要だと感じます。テンプレートはすべてのテーマで機能するとは限りませんが、ユーザーのテーマとさらに統合できるデフォルトが必要です。
繰り返しますが、この状況に対処する最善の方法は何ですか?次のいずれかを実行できると思います。
ショートコード
ショートコードは、非開発者がサイト内のどこにでもバンド、アルバム、トラック、バンドリストなどを追加できるようにする非常に柔軟でユーザーフレンドリーな方法として使用できます。特定のページにバンドを配置したり、バンドごとに個別のページを作成したりするのに役立ちます(あまり効率的ではありませんが、一部のユーザーはこの方法でアプローチします)。ショートコードはHTMLを生成します。HTMLは、目的のデータの見やすいデフォルトビューを提供する提供されたCSSファイルに関連付けられます。すべてがプラグインファイル内に含まれ、テーマで何もする必要はありません。
テンプレートファイル
プラグインには、テンプレートファイルも同梱できます。テンプレートファイルをマークアップして、見やすいデフォルトビュー用にスタイル設定できます。投稿タイプが表示されたときにテーマが適切なテンプレートを見つけるように、ユーザーにファイルをテーマフォルダーに移動する指示を提供できます。ユーザーがシングルクリックでファイルを移動できるインターフェースを提供することさえできます(注:起動時にユーザーのテーマフォルダにファイルを作成することはありません。 。
また、フィルターを使用してこれらのファイルをプラグインフォルダーから移動せずに使用し、すべてを自己完結させたままにすることもできます。この目的で使用される「template_include」および「{$ type} _template」フィルターを見てきました。実際、themesフォルダーのテンプレートを使用できます。テンプレートが存在しない場合は、これらのフィルターを使用してデフォルトビューを提供できます。
質問
提示されたアイデアに何らかの問題がある場合、他の人がこれらの状況のベストプラクティスであると考えるもの、および私が含めていない代替案を知りたいです。
ありがとうございました!