WordPress
Perlを使ってXML-RPCでブログの情報を取得する
2014-02-12XML-RPC
PHPを使ってXML-RPCでブログの情報を取得するの、Perl版です。RPC::XML::Clientというパッケージを使ってみることにします。なければ、cpanmでインストール。
ThinkITの第2回:XML-RPCを利用したWeb APIをベースにしていますが、WordPressの関数名を使うところと、値を取り出すところを変えました。
以下、ブログ情報を取得するためのソースです。
use strict; use warnings; use RPC::XML::Client; use utf8; use Encode; # XML-RPCのURL my $url = 'http://yoursite'; # 対象サイトのアカウント名とパスワード my $id = 'yourid'; my $pw = 'yourpassword'; # クライアントの生成 my $client = RPC::XML::Client->new($url); # リクエストの生成 my $req = RPC::XML::request->new( 'wp.getUsersBlogs', RPC::XML::string->new($id), RPC::XML::string->new($pw) ); # リクエストの発行 my $res = $client->send_request($req); if($res->is_fault){ print 'Error: '.encode('utf8',$res->value->{faultString})."\n"; } else { # 結果はリファレンスで渡されるので、デリファレンスをする my @blogs = @$res; my %blogDataHash = %{$blogs[0]}; my $blogNameRef = $blogDataHash{'blogName'}; print encode($$blogNameRef)."\n"; }
まず、リクエストの生成で、wp.getUsersBlogs関数を使いました。これは、WordPress標準のXML-RPC関数なので、この関数を使うほうがよいでしょう。
また、結果はリファレンスで渡されますので、デリファレンスをします。ブログ情報は配列で渡されるので、ハッシュのデリファレンス、配列のデリファレンス、スカラー値のデリファレンスを使います。
XML-RPC WordPress APIを参照すれば与える値と受け取れる値が確認できます。また、返戻値の仕様をいちいち確認するのが面倒な場合は、Data::Dumperを使って表示し、データ構造を確認するのが手っ取り早いと思います。
エラーチェックは、$res->is_faultメソッドで行います。例えば、アカウント名やパスワードを間違えた時は、次のエラーメッセージを取得できます。
Error: ユーザー名またはパスワードが正しくありません。
Perlはデリファレンスをするとか、PHPに比べると若干面倒ではあるのですが、慣れてる言語で実装すると良いでしょう。
Topic
- XML-RPC (3)
- Theme (2)
- HowToCreate (2)
- Plugins (1)
- 基礎から学ぶWordPress (1)