web-dev-qa-db-ja.com

サイトURLを保持したまま、単一の共有カスタム投稿タイプを持つマルチサイト

2つの非常に異なるサイトの小規模なマルチサイト設定で、両方ともeventカスタム投稿タイプにアクセスする必要があります。私は投稿を複製したくありません(投稿をネットワークに「ブロードキャスト」するいくつかのプラグインがあります)。

switch_to_blog(1)は私を途中で手に入れます、ここでblog 1eventデータを含む「マスター」ブログです、すべてのイベントをリストするアーカイブスタイルのページまで。しかし、私の懸念は、blog 2から見たときのイベントのURL /パーマリンクがblog 1を指すことになり、そのパーマリンクをたどるとユーザーが他のブログに移動し、ユーザーが混乱することです。

//blog1/events/event1から見たときに//blog2/events/event1のイベント投稿がblog 2として表示されるようにする(おそらく書き換えを使用する)解決策はありますか?

1
Tom Auger

2つの選択肢があります。

  1. ブログ2のCPTを'show_ui' => FALSEで登録します。ブログ1をsave_postにフックし、データをブログ2にコピーします。

    • Pro:あなたはそれらの投稿を検索することができます。正しいテンプレートが自動的に使用されます。
    • デメリット:重複したデータは常に少し汚れています。
  2. ブログ1のCPTのようなURLスキームでエンドポイント を登録します(EP_ROOT)。

    • Pro:重複データはありません。
    • 欠点:正しいテーマファイルをロードするには、テンプレートロジックを手動で実装する必要があります。そして検索は機能しません。
1
fuxia

どのブログに「レコードのデータ」を含めるかを決定し、他のブログで"show_ui" => falseを使用してから、適切なテーブルプレフィックスを使用するようにその投稿を処理するクエリを変更します。あなたが閲覧しているどのブログのコンテキスト内でもデータは入力されます(例:site_url()は期待通りに動作し、あなたのテンプレートとテーマは正しいでしょう - あなたが異なるブログに対して異なるテンプレートとテーマを使用していると仮定)。どこにも重複データはありません。

欠点は、非常に大規模なブログネットワークがあるシナリオでは、これが管理できなくなる可能性があることです。

他のすべてのブログのsave_postアクションにフックしてそれらを書き込みに騙す準備ができていない限り、投稿データを入力および更新できるようにするには、「記録のブログ」にアクセスする必要があります。他のブログのテーブルへのデータ。その場合、その投稿タイプのリストテーブルとedit-postリクエストも同様に曖昧にする必要があるでしょう。これは控えめに言っても困難です。

このソリューションは、主要ブログへのアクセス権を持つ管理者によって管理されるコンテンツの場合に機能しますが、ネットワーク上の他のブログに投稿するか表示する必要があります。ネットワーク上の他のブログの管理者/ユーザーによって作成されるコンテンツを、そのネットワーク上の他のブログと共有することは適切ではありません。そのアプローチについては、ここで toschoの答えを参照してください

0
Tom Auger