web-dev-qa-db-fra.com

Poste personnalisé dans une table de base de données distincte pour la synchronisation

J'ai un type de message personnalisé qui doit être synchronisé entre deux sites Web différents hébergés sur des serveurs différents. Si le site est modifié, inséré ou supprimé, l'autre base de données devra également mettre à jour sa base de données pour la modification. Le problème que je vois est que les identifiants seront décalés entre les deux bases de données.

Mon raisonnement est donc le suivant: pourquoi ne puis-je pas créer un type de publication personnalisé à héberger dans une table de base de données différente et simplement synchroniser cette table entre les deux installations?

Le problème que je vois est que je dois prendre en compte les conflits tels que les URL. Le slug "hello-world" et le slug personnalisé "hello-world" lors de l'accès à l'URL site.com/hello-world.

Quelqu'un m'indique dans une direction?


Edit: En regardant de plus en plus et y penser. Sur save_post, vérifiez si c’est LE type de publication personnalisé, connectez-vous à l’autre base de données et effectuez un dernier ID d’insertion, stockez-le localement, puis mettez à jour la base de données externe avec l’ID interne de la publication.

 enter image description here 

5
Darius

Sur la base des détails ci-dessus, je peux penser aux suggestions suivantes:

  1. Créez une configuration dans laquelle vous avez deux serveurs utilisant la même base de données. Cela peut fonctionner si vos deux configurations sont identiques

  2. Synchronisez les données (option 1). Écrivez un plug-in que vous installez sur les deux serveurs. Ce plug-in lira périodiquement les données de l'autre base de données et mettra à jour ses propres enregistrements.

  3. Synchronisez les données (option 2). Fonction d'écriture qui, lorsque vous mettez à jour un enregistrement dans la base de données 1, déclenchera un appel d'API REST envoyé à la deuxième installation. Ensuite, cette deuxième installation recevra les données mises à jour de la première installation via cet appel et mettra à jour ses propres enregistrements.

  4. Créer une base de données centrale à laquelle les deux installations ont accès et cette base de données centrale contiendra des données partagées pour les deux installations

  5. Avez-vous pensé à la configuration réseau de WordPress (vous n'êtes pas sûr que cela fonctionne dans cet environnement, vous devez décider si cela correspond à vos besoins)

Personnellement, j'aime les options 3 et 4 en fonction de ma compréhension du problème, mais encore une fois, je n'ai pas l'image complète comme vous le faites.

0
Greeso

Si vous deviez créer une table distincte pour connecter les deux installations WordPress, vous devrez créer des fonctions personnalisées de suppression, de modification et d'ajout afin que les données soient envoyées à la bonne base de données.

Si vous avez déjà besoin de créer ces fonctions personnalisées (de nombreuses façons de vous connecter à un post type, une modification, une suppression, etc.), pourquoi ne pas créer un seul site avec la "base de données principale" et utiliser uniquement wpdb pour se connecter cette autre base de données et obtenir, éditer, poster. Il n’est pas nécessaire de procéder à une vérification compliquée de la cohérence car tout est réuni au sein d’une même table.

0
mikeg542