web-dev-qa-db-fra.com

Synchroniser les publications d'un site WordPress à un autre

Je veux atteindre les objectifs suivants -

J'ai 2 sites WordPress hébergés sur des serveurs différents. Appelons A en tant que site émetteur et B en tant que site récepteur. Chaque fois que j'ajoute/met à jour/supprime une publication dans A, elle doit être reflétée telle qu'elle est dans B. Non seulement les données de publication, mais les taxonomies et les champs personnalisés doivent également être mis à jour correctement dans B.

J'ai vérifié l'API WordPress REST, mais je ne la préfère pas, car elle conserve simplement un flux JSON sur A pour lequel je peux envoyer une demande d'extraction de B. Cela convient pour les publications extraites, mais ne convient pas pour la mise à jour et la suppression. De plus, supposons que s’il ya 10 blogs aujourd’hui, il puisse en avoir 100 et ainsi de suite. Donc, selon ma compréhension, cela ne convient pas à mon besoin.

Une autre approche que je cherche probablement à faire consiste à ajouter une fonctionnalité dans A pour envoyer une demande à distance à B et B devrait avoir des points de terminaison prêts.

Par exemple. Si je crée un point de terminaison sur le site B, dites 'update_post' et envoyez-lui la demande de A sur un crochet. Comme pour l'action de sauvegarde de publication, envoyez une demande au point de terminaison 'update_post' disponible sur B, puis B créera une publication avec les données de publication reçues de A. L'ID de la publication sera différent dans B que dans A pour cette publication. enregistrez l'ID obtenu de A dans la méta de la publication de la publication créée dans B, puis, sur cette base de relation, gérez des activités telles que la mise à jour, la suppression, etc. Lors de la mise à jour, je dois également m'occuper de postmeta, catégorie/tags, mises à jour des images en vedette.

Ce que je veux pour l’instant, c’est de créer des points de terminaison -

Si je crée un terminal tel que http://example.com/insert_post , je dois alors créer un fichier externe PHP dans lequel les fonctions WordPress ne sont pas disponibles et je pense utiliser wp-load.php pour charger WordPress. n'est pas une bonne idée. Donc, je veux y parvenir uniquement avec WordPress.

J'ai recherché et trouvé cette fonction http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint . J'ai également reçu de nombreux articles à ce sujet, mais à tous les endroits, je vois, ils disent que nous pouvons créer des points de terminaison pour poster, pages, commentaires, etc. au format JSON. Je ne sais pas si et comment cela peut être utile dans mon scénario. Je veux juste ça -

  1. Créer un point de terminaison personnalisé
  2. Rendre la fonctionnalité WordPress disponible de manière appropriée

Toute aide serait grandement appréciée. Merci d'avance !!!

3
user_007

Avez-vous essayé codex.wordpress.org/XML-RPC_Support.

Ce code fonctionne conjointement avec la bibliothèque IXR disponible sur incutio :

include('IXR_Library.php');

$usr = 'theusername';
$pwd = 'thepassword';
$xmlrpc = 'http://not-therealurl.com/xmlrpc.php';
$client = new IXR_Client($xmlrpc);

$client -> debug = true; //optional but useful

$params = array(
    'post_type' => 'post',
    'post_status' => 'draft',
    'post_title' => 'Test Post',
    'post_author' => 4,
    'post_excerpt' => 'This is my test excerpt',
    'post_content' => 'This is my test post. Now its longer than the excerpt.'
);

$res = $client -> query('wp.newPost',1, $usr, $pwd, $params); 
2
james may