web-dev-qa-db-ja.com

作業コード例 PHP サイトへのXML-RPC接続?

私は外部のアプリ(ユーザー名と分類データを取得し、新しい投稿を作成する必要があります)とWordPressサイトの統合に取り組んでいます。私はWP(4.0)の最新ビルドを実行しています。

XML-RPCのドキュメントは余りにも余裕があるので、Pastebinに最近(2014年?)の実用的な例をあげることができればと思っています。正直なところ、グーグルマシンは単にこれに失敗します。

理想的には、コード例は外部のXMLRPCライブラリではなくWPのバンドルライブラリ(class-IXR.php、class-wp-http-ixr-client.php)を使用するでしょう。

これはまだ機能していないものです。

<?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

さて、私はばかだったので、それをやめました。

A)2年以上前の答えは古くなると思います。 b)基本的なIXRライブラリの特別なWPフレーバーが必要です。私は混乱して、「ツールは使用インターフェースでは非常に基本的なものである」のではなく、「彼らは全体の話をしているのではない」として、wp.orgの文書の疎さを取りました。

このコードは、 incutio.com にあるIXRライブラリと連携して機能します。

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

例をどれだけ複雑にしますか。

これは "Hello"を出力します。

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

これは "9"を出力します。

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

これは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'];

出典:私、4年前: http://ottopress.com/2010/wordpress-3-1-and-xml-rpc/

2
Otto