web-dev-qa-db-fra.com

Multisite avec un seul type de publication personnalisé partagé, tout en conservant l'URL du site

Petite configuration multisite, deux sites très différents, les deux doivent accéder à un type de publication event personnalisé. Je ne veux pas dupliquer les messages (certains plug-ins "diffusent" un message sur le réseau).

switch_to_blog(1) me conduira en partie, où blog 1 est le blog "maître" qui contient les données event, dans la mesure où les pages de style archive répertorient tous les événements. Mais ce qui me préoccupe, c’est que l’URL/permalien de l’événement, vu de blog 2, pointe vers blog 1 et que, après ce permalien, l’utilisateur soit redirigé vers l’autre blog, ce qui le trouble.

Existe-t-il une solution (éventuellement en utilisant rewrite) qui permettrait à un événement post à //blog1/events/event1 d’apparaître en tant que //blog2/events/event1 lorsqu’il est visualisé à partir de blog 2?

1
Tom Auger

Il y a deux options:

  1. Enregistrez le CPT sur le blog 2 avec 'show_ui' => FALSE. Accrochez le blog 1 dans save_post et copiez les données dans le blog 2.

    • Pro: Vous pouvez rechercher dans ces publications. Les modèles corrects seront utilisés automatiquement.
    • Contre: Les données dupliquées sont toujours un peu… sales.
  2. Enregistrez un noeud final avec un schéma d'URL tel que le CPT sur le blog 1 (EP_ROOT).

    • Pro: Pas de données dupliquées.
    • Con: Vous devez implémenter la logique de modèle manuellement pour charger le fichier de thème correct. Et la recherche ne fonctionnera pas.
1
fuxia

Décidez quel blog contiendra les "données d'enregistrement", utilisez "show_ui" => false sur les autres blogs, puis modifiez les requêtes qui traitent de ce message pour utiliser le préfixe de table approprié. Les données seront toujours renseignées dans le contexte du blog affiché (c.-à-d.: site_url() fonctionnera comme prévu et vos modèles et votre thème seront corrects, à condition que vous utilisiez différents modèles et thèmes pour différents blogs) et que ne pas avoir des données dupliquées n'importe où.

L'inconvénient est que, dans le cas d'un très grand réseau de blogs, cela pourrait devenir ingérable.

Cela signifie également que vous devez avoir accès au "blog of record" pour pouvoir saisir et mettre à jour les données de publication, sauf si vous êtes également prêt à vous accrocher à l'action save_post de tous les autres blogs et à les tromper en écriture. les données aux tables de l'autre blog. Vous auriez également besoin de modifier la liste des tables de ce type de message et la demande de modification de message, ce qui est pour le moins décourageant.

Cette solution fonctionne dans le cas d'un contenu qui sera géré par un administrateur ayant accès au blog principal, mais qui doit être posté ou visible sur d'autres blogs du réseau. il ne convient pas que le contenu créé par les administrateurs/utilisateurs d'autres blogs du réseau soit partagé avec les autres blogs de ce réseau. Pour cette approche, voir la réponse de toscho ici .

0
Tom Auger