WordPress

XML-RPCを使ってWordPressのブログ情報を取得する

ブログのエントリーを投稿したい、というような、命令を出す側はPHPやPerlなど、どのような言語で記述することも基本的には可能なのですが、PHPで書くのが簡単っぽいので、PHPでいろいろと書いてみたいと思います。その前に、XML-RPCをPHPから使いやすくするように、XML_RPC2パッケージをインストールしておきます。

XML_RPC2パッケージのインストール

XML_RPC2はPHP5用に実装されたXML-PPCパッケージです。(このパッケージが使えない場合は、代わりにXML_RPCをインストールすると良いでしょう。ただし、これ以降のコードはXML_RPC2を使用したものとなるため、そのままではXML_RPCを使用した場合には使えません…)

とりあえず、インストール用コマンドは次のような感じ。

# pear install XML_RPC2

ブログの情報を取得してみる

Codexを見ると、wp.getUsersBlogs関数を使用すればブログの情報が取得できるみたいです。引数(パラメータ)はユーザ名とパスワード。では、早速、コードを書いてみます。

<?php
require_once 'XML/RPC2/Client.php';

$url='http://yourhost/xmlrpc.php';
$username='yourname';
$password='yourpassword';

$options = array('prefix'=&gt; 'wp.','encoding' =&gt; 'utf-8');
$client = XML_RPC2_Client::create($url,$options);
$response = $client-&gt;getUsersBlogs(array($username,$password));

print_r($response);
>

print_rで$responseをdumpした結果は次の通り。例として、日本の法律お知らせblogにアクセスした結果を次に示します。

Array
(
    [0] => Array
        (
            [isAdmin] => 1
            [url] => http://blog.law.2nx.info/
            [blogid] => 1
            [blogName] => 日本の法律お知らせblog
            [xmlrpc] => (...省略...)
        )
)

コードを順に見ていきます。まず2行目でXML_RPC2のClientモジュールを読み込みます。8行目はXML-RPCを使用するときのオプション。WordPressの関数名は、頭に「wp.」をつけるので、prefixに”wp.”を付けること、また、念のため文字コードとしてUTF-8を指定しました。9行目でクライアントを作成して、10行目でwp.getUsersBlogsをコールします。パラメータはユーザ名とパスワードでしたので、それら2つをarrayにしてgetUsersBlogsの引数として与えます。

戻り値を適当にパースすれば、必要な情報が取得できます。エントリーの投稿も、基本的にはこんな感じでコールすればOKです。

では、次は記事の投稿をしてみます。


余談ですが、なぜ関数名が、getUsersBlog”s”と複数形であるか、もしくは、この関数の戻り値が配列なのかについては、おそらく、WordPressのマルチサイト機能によるものだと思われます。

詳しくは、WordPress マルチサイト機能を使ったんで、手順・やったことをまとめて綴りますなどを参照すると良いと思います。