XML-RPCリクエストをWordPressに送信してレスポンスを受け取る


[XML-RPC による WordPress への投稿 関連記事]

前回はXML-RPCの仕組みについてみたが、今回は実際にXML-RPCリクエストをWordPressに送信してレスポンスを受け取る処理をみていく。

※WordPress3.5からはXML-RPCはデフォルトでON状態になっている。しかしそれ以前はでデフォルトがOFF状態なので管理パネルの設定で使える状態にする必要がある。

wp_024

クライアントの準備

クライアント側はWordPressとは別なので何でもいいのだが、今回は簡単に実装できるPHPで作成する。PHPでXML-RPC処理する場合は、pearの”XML_RPC2 パッケージ” を使う方法がよく説明されているが、今回は、”The Incutio XML-RPC Library for PHP” を使う。これはWordPress コアでも組み込まれているXML-RPCを処理するライブラリである。詳しくは前回に説明した。

wp_025
まずは、ライブラリを手に入れたいので公式サイトにアクセスする。
wp_026
“Download the Library” をクリックするとファイルのダウンロードが始まる。
ダウンロードしたファイルを解凍すると “IXR_Library.php” という名前のファイルがある。このファイルを読み込むだけでXML-RPCリクエストができるようになる。

検証用XML-RPC メソッド

WordPressに対してメソッドを指定して実行させるわけだが投稿の新規作成・編集など数多くのメソッドが準備されている。この中でWordPressは2つのデモメソッドを準備している。今回はこの2つのデモメソッドを使って動作を確認する。

【class-wp-xmlrpc-server.php】
'demo.sayHello' => 'this:sayHello',
'demo.addTwoNumbers' => 'this:addTwoNumbers'
/**
 * Test XMLRPC API by saying, "Hello!" to client.
 *
 * @since 1.5.0
 *
 * @param array $args Method Parameters.
 * @return string
 */
function sayHello($args) {
    return 'Hello!';
}
/**
 * Test XMLRPC API by adding two numbers for client.
 *
 * @since 1.5.0
 *
 * @param array $args Method Parameters.
 * @return int
 */
function addTwoNumbers($args) {
    $number1 = $args[0];
    $number2 = $args[1];
    return $number1 + $number2;
}

124~125行目が今回XML-RPCリクエストで指定するメソッドになる。
demo.sayHello‘ を指定すれば、実メソッド ‘this:sayHello’ を処理し結果を返す。
‘demo.addTwoNumbers‘を指定すれば、実メソッド ‘this:addTwoNumbers’ を処理し結果を返す。

XML-RPCリクエストを送る

いよいよXML-RPCリクエストを送る。
送信URLだが Really Simple Discovery (RSD) でチェックすると

http://memories.zal.jp/WP/wordpress/xmlrpc.php

となる。RSDについては前回 説明した。

  1. demo.sayHello
    このメソッドはパラメータなしで、’Hello!’をレスポンスとして返す。
    require_once("IXR_Library.php");
    
    $server_url = 'http://memories.zal.jp/WP/wordpress/xmlrpc.php';
    $client = new IXR_Client($server_url);
    
    if (!$client->query('demo.sayHello')) {
        die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage());
    }
    else{
        echo $client->getResponse();
    }
    • 1行目で”The Incutio XML-RPC Library for PHP” ライブラリを読み込む。
    • 3行目でXML-RPCリクエスト送信先を指定する。
    • 6行目で’demo.sayHello’ メソッドを実行するように指定する。
    • 10行目でレスポンスを表示。

    ”The Incutio XML-RPC Library for PHP” の使い方は、クライアント処理のマニュアル Basic Client Construction を参考にする。
    正常に処理が実行できたら、画面には ‘Hello!‘ と表示されているはずだ。

  2. demo.addTwoNumbers
    このメソッドは数値の2つのパラメータを渡すと、加算して返す。
    require_once("IXR_Library.php");
    
    $server_url = 'http://memories.zal.jp/WP/wordpress/xmlrpc.php';
    $client = new IXR_Client($server_url);
    
    if (!$client->query('demo.addTwoNumbers' , 1 , 3)) {
        die('Something went wrong - '.$client->getErrorCode().' : '.$client->getErrorMessage());
    }
    else{
        echo $client->getResponse();
    }
    • 1行目で”The Incutio XML-RPC Library for PHP” ライブラリを読み込む。
    • 3行目でXML-RPCリクエスト送信先を指定する。
    • 6行目で’demo.addTwoNumbers’ メソッドを実行するように指定する。
      また、パラメータとして 1 と 3 を渡す。
    • 10行目でレスポンスを表示。

    正常に処理が実行できたら、画面には 1+3 の計算結果である 4‘  と表示されているはずだ。

以上で、XML-RPCリクエストをWordPressに送信してレスポンスを受け取る処理をみてきた。処理の流れを理解すれば非常に簡単である。WordPressは非常に多くのXML-RPC メソッドを準備している。処理をしたいメソッドを調べ、そのメソッドに必要なパラメータを一緒に送信すれば実行してくれる。次回からは代表的なXML-RPC メソッドをみていきたいと思う。
参考


[XML-RPC による WordPress への投稿 関連記事]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です