Je travaille sur une intégration entre une application externe (qui doit extraire des noms d'utilisateur et des données de taxonomie et créer de nouveaux messages) et un site WordPress. J'utilise la dernière version de WP (4.0).
La documentation XML-RPC étant aussi épargnée, j'espère que quelqu'un pourra simplement coller un exemple récent (2014?) À Pastebin. Honnêtement, la machine google échoue simplement sur celui-ci.
Idéalement, l'exemple de code devrait utiliser les bibliothèques fournies par WP (class-IXR.php, class-wp-http-ixr-client.php) plutôt que des bibliothèques externes à XMLRPC.
Voici ce qui ne fonctionne pas (encore):
<?php
get_header();
include_once( ABSPATH . WPINC . '/class-IXR.php' );
include_once( ABSPATH . WPINC . '/class-wp-http-ixr-client.php' );
$client = new WP_HTTP_IXR_CLIENT( 'redactedSITEURL' );
$post = array(
'post_type' => 'post',
'post_status' => 'draft',
'post_title' => 'Test Post',
'post_content' => 'This is my test post',
'post_author' => 1
);
$data = xmlrpc_encode_request('wp.newPost', array('redactedURL.com', 'redactedUNAME', 'redactedPASSWORD', $post);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'redactedSITEURL.com/xmlrpc.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$exec = curl_exec($ch);
$response = xmlrpc_decode($exec);
curl_close($ch);
var_dump($response);
?>
Ok, j'étais stupide, alors j'ai arrêté ça.
J'avais supposé que a) toute réponse datant de plus de deux ans serait périmée; b) J'aurais besoin d'une variante WP particulière de la bibliothèque IXR de base; J'étais confus et j'ai pris le peu d'éclat de la documentation de wp.org comme "ils ne racontent pas toute l'histoire" au lieu de "l'outil est très basique à l'interface d'utilisation".
Ce code fonctionne avec la bibliothèque IXR disponible sur incutio.com :
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);
À quel point voulez-vous que l'exemple soit complexe?
Cette sortie "Bonjour".
$client = new WP_HTTP_IXR_Client('http://example.com/xmlrpc.php');
$client->query('demo.sayHello');
echo $client->getResponse();
Cette sortie "9".
$client = new WP_HTTP_IXR_Client('http://example.com/xmlrpc.php');
$client->query('demo.addTwoNumbers', 4, 5);
echo $client->getResponse();
Cela donne la version WordPress:
$client = new WP_HTTP_IXR_Client('http://example.com/xmlrpc.php');
$client->query('wp.getOptions', 0, 'username', 'password', 'software_version');
$response = $client->getResponse();
echo $response['software_version']['value'];
Source: Moi, il y a 4 ans: http://ottopress.com/2010/wordpress-3-1-and-xml-rpc/