WordPress en tant que client XML-RPC?

12

Je souhaite synchroniser des post-éditions sur deux sites. Environnement de test, pas de production. Direction unique (site A à site B, mais pas à l'envers).

En principe, je modifie un message sur ma pile de test locale et le même message (faisant partie du contenu du test) sur le serveur distant doit être mis à jour avec une copie identique du contenu obtenu.

Je sais que le serveur XML-RPC est implémenté dans WordPress ... Mais WordPress n’est pas un client XML-RPC et je ne sais pas à quel point il serait facile de le transformer en un seul (je méfie généralement de XML- n'importe quoi:)

Donc, devrais-je utiliser XML-RPC et implémenter une fonctionnalité client ou cela ne vaut pas la peine, et créer un formulaire personnalisé ou quelque chose d'autre sur le serveur distant pour intercepter les modifications?

    
posée Rarst 01.05.2011 - 20:14

1 réponse

13

WordPress a déjà une classe de client XML-RPC implémentée. Il se trouve dans le même fichier que la partie serveur: class-IXR.php situé dans wp-includes .

Le code suivant va générer un nouveau message. Vous pouvez envelopper ceci dans une fonction et l'attacher au crochet d'action save_post / update_post . Pour synchroniser les deux parties, vous pouvez rechercher le post-slug ou soumettre le même post-id à la publication du second blog.

$rpc = new IXR_Client('http://second-blog-domain.tld/path/to/wp/xmlrpc.php');

$post = array(
    'title' => 'Post Title',
    'categories' => array('Category A', 'Category B'),
    'mt_keywords' => 'tagA, tagB, tagC',
    'description' => 'Post Content',
    'wp_slug' => 'post-slug'
);

$params = array(
    0,
    'username',
    'password',
    $post,
    'publish'
);

$status = $rpc->query(
    'metaWeblog.newPost',
    $params
);

if(!$status) {
    echo 'Error [' . $rpc->getErrorCode() . ']: ' . $rpc->getErrorMessage();
    exit();
}
    
réponse donnée rofflox 01.05.2011 - 23:35

Lire d'autres questions sur les étiquettes