web-dev-qa-db-ja.com

ミニサイト戦略

私はWordPressのマルチサイトインストール内にいくつかのミニサイトを許可するプロジェクトに取り組んでいます。これがで機能すると仮定した方法です。

クライアントには多数の個別の場所があり、それぞれに独自のWebサイトがあります。これらのWebサイトはすべて、大規模なWordPressネットワーク内のサイトであり、ユーザーとサイトの一元管理を可能にします。この部分はすでに機能しています。

しかし、各ロケーションには任意の数のクライアントがあり、各クライアントがネットワーク内に独自の「ミニサイト」を持つことを望んでいます。基本的に新しいWordPressサイトですが、その場所のサイト、URL、および管理者リストの下にあります。

ミニサイトのユーザーは、そのミニサイトのみを使用でき、親サイトは使用できず、ネットワーク上の他のサイトは使用できません。

私はこれに取り組んできたので、私はこれを設定するために2つの異なる方法に出くわしました。どちらもやや複雑です。

マルチネットワークインストール

WordPressでは、1つのコードベースで複数のスタンドアロンネットワークをインストールできます。それはマルチサイトに似ていますが、ステロイドについてです。上記の問題を解決するための私の最初の試みは、システムに多数のマルチネットワーク機能を埋め込むことでした。新しいクライアントミニサイトを追加したときは、実際には親サイトが「所有する」ネットワークに新しいサイトを追加していました。

これは半分働いた。サイトをうまく作成することはできますが、サーバーを細かく制御しなくても(私のクライアントがプラグインを要求し、SSHアクセスを許可しなくてもサーバーにドロップできる場合)、Apacheでルーティングを機能させるのは困難でした。新しいミニサイトのいくつかはロードされ、他のものは404、他のものは親サイトにリダイレクトされます。

他の問題は管理でした。必要なだけミニサイトを作成することができます(そしてそれらが存在することをphpMyAdminで確認することはできます)が、利用可能なサイトのリストを読み返すのは困難でした。

他の問題はデータベース管理でした。新しいサイトを作成するたびに、データベースに10個以上の新しいテーブルが作成されます。サイトが1つか2つの投稿/ページしかない場合、これはやり過ぎです。

テーマを上書きしたカスタム投稿タイプ

私の新しいアプローチは、クライアントをカスタム投稿タイプとして設定することです。その後、親サイトのユーザーは新しい投稿を作成し、メタボックスのフィールドをチェックしてコンテンツをクライアントに関連付けることができます(投稿間の関係スキームを使用)。

カスタム投稿タイプのページにアクセスすると、WordPressは表示を上書きし、カスタム投稿タイプに関連付けられている投稿を表示するカスタムテーマ(P2のmod)を表示します。

ここではスケーラビリティに関する問題はそれほど多くありませんが、コンテンツ管理だけが問題です。あるクライアントから別のクライアントへのコンテンツのフィルタリングを可能にする方法を考え出したことはありません(コンテンツはメタフィールドに基づくCPTに関連付けられているため、別の投稿管理画面を作成しない限り、表示が困難です) client-xの投稿 ")。

私の質問:これらのアプローチのどれが最善ですか?私が検討すべきもう1つのアプローチはエンドユーザーにとってより使いやすいかもしれませんか?

6
EAMann

あなたが必要以上に複雑にしているように思えます。クライアントとして作成者/ユーザーが既に存在します。それを表す別の概念を作成する必要はありません。

要件:

各サブサイトに多数のユーザー(クライアント)が含まれるwpネットワーク各クライアントは、編集および制御できる単一のページが必要です。 (1ページのみ?投稿なし?)

そのため、URLは次のようになります。

network.com/minisite/clients/clientx(サブフォルダー)

または

minisite.network.com/clients/clientx(サブドメイン)

実行する方法:

Justin Tadlocksの無料メンバープラグインなどのメンバー/ロールプラグインを使用して、ページを編集する機能を備えたカスタマイズされたクライアントロールを作成しますが、投稿など(またはphp)は作成しません

クライアントの登録時に、「user_register」にアクションを追加します。

  1. 作成者名は入力された詳細に基づいている可能性があるため、「clients」の下にクライアントサブページ「clientx」を作成するか、登録カスタムフィールドを使用して名前を指定します。

アクション/フィルターを追加します(おそらくwpコードを見て最適なフックを見つけます)

  1. メニューからadd_newを削除します(google wordpress remove menu-完了しましたが、今はどのアクションを思い出せません)
  2. 1ページがすでに作成されているかどうかを確認し、それ以上許可しないでください(メニューでも方法を見つける場合は、WPは編集ページとは異なる作成ページ機能を持っているとは思わないが、それは来るかもしれない http://core.trac.wordpress.org/ticket/16714
  3. 全員が編集ページリストから自分のページのみを表示できるようにします

可能性(クライアントページの標準テンプレートがある場合):

  1. 自動作成されたページに、プロファイルなどから詳細を追加するクライアントテンプレートを作成します。編集ページのドロップダウンから使用できるさまざまなテンプレートを使用して、入力したコンテンツに対して詳細のレイアウトを選択できます。に

私の興味:

私はこのようなことを自分でやろうと考えており、プラグインにすることができます。人々が持っているさまざまな要件を聞くのはとても興味深いです。

上記のアプローチはかなりきれいでシンプルなものに保つと思います(常に良い考えです)。

0
anmari