web-dev-qa-db-ja.com

サポートチケットプラグインのカスタム投稿タイプ

ユーザーがサインアップし、1つ以上のサイトを追加し、各サイトの下にサポートチケットを追加する、サポートチケット用の(非常に単純な)プラグインを作成しようとしています。

私の質問は、機能を他のプラグインに頼らずにこれを構成する方法についてです。

  • ユーザーがサインアップして新しい役割(「顧客」など)を取得します。
  • お客様がサイトを追加すると、そのサイトはお客様にのみ表示され、他には表示されません。サイトはカスタム投稿タイプになるでしょう、と私は思います。
  • 顧客がサイトにチケットを追加すると、それは顧客にのみ表示されます。チケットもCPTだと思います。

ベストプラクティスの観点から、サイトとチケットの可視性とCPTには作成者とロールを使用するのが適切ですか。

そして、どのように私はサイトとチケットの間の関係を作り出すのですか?私は他のもの(CPTRのような)に加えて、投稿タイプ間の関係を管理するPost 2 Postsプラグインがあることを知っていますが、私はこのプラグインのコア機能を他人に頼るのを避けたいと思います。

編集:どういうわけかカスタム分類法がこのパズルで役割を果たすことができるかどうか確認しようとしていますが、それがどのように適合するのかわかりません。任意の提案は大歓迎です。

1
Calle

カスタム投稿タイプ はあなたが達成しようとしているもののためのあなたのための良い解決策です。実際、ほとんどすべてのケースで、通常のPostタイプのPageタイプがあなたのユースケースに合わない場合、 Custom Post Types になります。それらは、前述のものではなく、カスタムコンテンツタイプのように考えるべきです。それは彼らの目的に少し意味を与えます。

Scribu による Posts 2 Posts プラグインが必要ですか?いいえ良いプラグイン、実際にはある投稿を他の投稿や他の多くの投稿に関連付けるために一貫して推奨される唯一のものですが、あなたのインスタンスではクライアント(顧客)を扱っています。あなたがそう言うように「サイト」を含む詳細...

これはで処理することができます、

SiteTicketの関係をどのように作成するかは、クライアントに提供している内容によって異なります。 1ユーザーあたり1サイトですか、それともMultiple SitesperUserですか?

どちらにしても、これまでのところUserSitesをユーザーメタデータとして追加する必要があると考えています。そのため、を作成できるかどうか1つのまたは多くのサイトがあなた次第です。ユーザーがチケットを借りるときは、そのチケットをどのサイトに適用するかを選択するためにドロップダウンを提示することができます。たとえば、このドロップダウンメニュー(選択メニュー)は、そのユーザーに関連付けられている関連ユーザーメタフィールドからデータを取得します。

Custom Post Type 編集画面内でこれをどのようにまとめるかは、 Custom Meta Boxes を使用することで非常に簡単になります。 カスタムフィールド への機能的なユーザーインターフェース。

2つのカスタムメタボックスクラスメタボックスを構築するプロセスを簡単にするのに役立つものを調べることをお勧めします。

他にもありますが、これらは私が使用したものであり、まだ一貫して使用しているものです。私はWPAlchemyにもっと部分的です。なぜならそれは私が大量に使い始めたそのタイプの最初のクラスだからですが、今は両方を同じ意味で使います。いくつかの議論が両方に対して行われています、それはより良いと理由です、しかし...それはそれらのコード愛好家型が:)について心配するためです

カスタム分類法 も役割を果たすことができますが、カテゴリと同じように taxonomies を使用することを考えるかもしれません。たとえば、チケットの緊急性を分類するために分類法を使用することができます。

- High priority
- Medium priority
- Low priority
- Inquiry only
- Bug report
- Suggestion

...なんでも。

taxonomies だけではなく、投稿メタフィールドでも上記を提供することができます。一部のメタボックスクラスでは、カスタム分類法をメタボックスデザインに簡単に統合できます。それ以外の場合は、通常の分類法メタボックスを使用して、一度登録して投稿タイプに関連付けると自動的に表示されます。可能性はやや無限大ですが、 taxonomies にとらわれないようにしてください。情報を分類するのに役立つこと、およびユーザーがチケットごとにまとめて使用できることを忘れないでください基礎。

3
userabuser