XML-RPC とは


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

WordPress を使ってて、投稿するのにいちいちWordPress管理パネルにアクセスする必要があるのもめんどうだなって思うこともある。なので普段から持ち歩いているスマホから投稿できたらいいな!と思って調べていたら “XML-RPC ” という手法をみつけた。以前から知っていた機能ではあるが、具体的に使ったことがないので検証することにする。

XML-RPC とは

PHPフレームワークであるCodeIgniter でわかりやすく説明されていたので引用する。

インターネット上の2つのコンピュータが対話する方法で非常にシンプルなのは、XML を使うものです。 クライアントと呼ばれる一方のコンピュータは、XML-RPC リクエストを サーバと呼ばれるもう一方のコンピュータに送信します。サーバがリクエストを受信し、処理すると、 クライアントにレスポンスを返します。

たとえば、MetaWeblog API を使う場合、XML-RPC クライアント (大抵は、デスクトップの投稿ツール) は、 サイトで実行されている XML-RPC サーバにリクエストを送ります。記事を公開するために、 新しいブログの記事を作成するリクエストであったり、既存の記事を編集するためのリクエストであったりします。 XML-RPC サーバはリクエストを受信すると、リクエストを処理するために、どのクラス/メソッドを呼び出せばいいのかを決定します。 処理されると、サーバはレスポンスメッセージを送り返します。

wp_017

The Incutio XML-RPC Library for PHP

今回はWordPressへの投稿なのでXML-RPC リクエストを受け取るサーバはWordPress コアとなる。WordPressのコードを解析していると、どうやらWordPressはリクエストの受け取りに “The Incutio XML-RPC Library for PHP” というライブラリを使っているようだ。

wp_018

クライアント側としては WordPressが指定したパラメータでXML-RPC リクエストを送信すればいいので、特にサーバ側 (WordPressコア) の処理については知る必要はない。しかし、’xmlrpc_methods‘ アクションフックなどでXML-RPC リクエストに対して独自の処理をWordPressで行いたい場合もあるのでこのライブラリについて少しみておく。

wp_019

公式サイトにアクセスすれば上記のように記載されている。

  • 簡単に使えることを主に設計されている。
  • クライアントとサーバ両方のクラスが組み込まれている。
  • XML-RPC 標準の知識はほとんどなくても使える。
  • PHPタイプから XML-RPC またはその逆の全自動処理
    ※XML-RPC リクエストを解析してPHPで使える配列やオブジェクトに変換してくれるなど
  • その他

とりあえず、非常に簡単に XML-RPC リクエスト を送信したり受け取ったりできるらしい。具体的な使い方は後ほど別記事で。

XML-RPC リクエストの受け口は?

WordPressのどのURLへXML-RPC リクエストを送信すればいいのだろ?
WordPressは、Really Simple Discovery (RSD) の仕組みがあるのでその内容をみてみる。
ちなみにRSDを簡単に説明する。

XMLフォーマットでなっており、クライアントソフトがブログやその他のウェブソフトウェアのサービスを見つけることができるように決めた公表規約である。

詳しくはReally Simple Discovery – Wikipedia で。
さて、http://example.com/wordpress/xmlrpc.php?rsd  にアクセスする。

wp_020

XMLフォーマットになっていて、apiLink にリクエスト送信先が指定されている。
api name が、WordPree だけでなく、Movable TypeやMetaWeblog などもあるのは、それらブログツール指定のパラメータでもWordPressはサポートしているということらしい。
詳しくは、XML-RPC Support « WordPress Codex で。

以上で、XML-RPC とはどんな仕組みなのかわかったので次回から具体的に処理をみていく。
参考


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

コメントを残す

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