wake-up-neo.net

Arbeitscode Beispiel von PHP XML-RPC-Verbindung zur Site?

Ich arbeite an einer Integration zwischen einer externen App (die Benutzernamen und Taxonomiedaten abrufen und neue Posts erstellen muss) und einer WordPress-Site. Ich verwende die neueste Version von WP (4.0).

Da die XML-RPC-Dokumentation so sparsam ist, hoffe ich, dass jemand ein aktuelles (2014?) Arbeitsbeispiel für Pastebin erstellen kann. Ehrlich gesagt, die Google-Maschine scheitert einfach an dieser.

Idealerweise würde das Codebeispiel die gebündelten WP-Bibliotheken (class-IXR.php, class-wp-http-ixr-client.php) anstelle einiger externer XMLRPC-Bibliotheken verwenden.

Folgendes funktioniert (noch) NICHT:

<?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);
?>
1

Okay, ich war dumm, also habe ich damit aufgehört.

Ich hatte angenommen, dass a) jede Antwort, die älter als zwei Jahre ist, nicht mehr aktuell ist; b) Ich benötige eine spezielle WP Variante der Basis-IXR-Bibliothek. Ich war verwirrt und nahm die Spärlichkeit der wp.org-Dokumentation als "sie erzählen nicht die ganze Geschichte", anstatt "das Tool ist sehr einfach in der Benutzeroberfläche."

Dieser Code funktioniert in Verbindung mit der IXR-Bibliothek unter 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);
1

Wie komplex soll das Beispiel sein?

Dies gibt "Hallo" aus.

$client = new WP_HTTP_IXR_Client('http://example.com/xmlrpc.php');
$client->query('demo.sayHello');
echo $client->getResponse();

Dies gibt "9" aus.

$client = new WP_HTTP_IXR_Client('http://example.com/xmlrpc.php');
$client->query('demo.addTwoNumbers', 4, 5);
echo $client->getResponse();

Dies erhält die WordPress-Version:

$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: Me, vor 4 Jahren: http://ottopress.com/2010/wordpress-3-1-and-xml-rpc/

2
Otto