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)