XML-RPCを使ってWordPressのブログ情報を取得する
2013-12-18XML-RPC
ブログのエントリーを投稿したい、というような、命令を出す側は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'=> 'wp.','encoding' => 'utf-8');
$client = XML_RPC2_Client::create($url,$options);
$response = $client->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 マルチサイト機能を使ったんで、手順・やったことをまとめて綴りますなどを参照すると良いと思います。
Topic
- XML-RPC (3)
- Theme (2)
- HowToCreate (2)
- Plugins (1)
- 基礎から学ぶWordPress (1)