
WordPress に記事を投稿する場合は、WordPress の管理画面から投稿するか、Mac であれば MarsEdit のようなブログエディタから投稿できます。
それらを使わずに、記事を投稿するには XML-RPC というのを利用すれば良いみたい。ってか、MarsEdit のようなブログエディタも XML-RPC を利用して記事を投稿しています。
XML-RPC の仕様はたった2ページしかないようでとてもシンプルな仕組みになってます。
参考:XML-RPC 仕様書
仕様書を読み込んで・・とすれば良いのでしょうが、ググったら XML-RPC を使って外部から投稿するサンプルプログラムがたくさんありましたので、それらをパクって参考にさせて頂きましょう。
今回、以下のサイトを参考にさせてもらいました。
参考:[WordPress] XML-RPC を使用する方法 | Sun Limited Mt.
参考:WordPress内からXML-RPCを利用して記事投稿を行う方法 | WordPress攻略本
とくに、[PHP] XML-RPCを使ってWordPressに投稿する – Sometime PHP さんのサンプルコードは大いにパクらせて参考にさせてもらいました。Thanx!!
基本的にはそのまま動きます。
とにかく、以下の部分が投稿する記事をつくっている部分みたいなので、
$content = new XML_RPC_Value( array( 'title' => new XML_RPC_Value($title, 'string'), 'categories' => new XML_RPC_Value($categories, 'array'), 'description' => new XML_RPC_Value($description, 'string'), 'wp_slug' => new XML_RPC_Value('bookmarks-of-'.date('Yms'),'string'), 'dateCreated' => new XML_RPC_Value(time(), 'dateTime.iso8601') ), 'struct');
XML_RPC_Value オブジェクトの引数で渡す連想配列に、記事タイトルだとか、記事カテゴリだとかを入れれば良いみたい。
例えば、複数のカテゴリを指定したい場合は、上記 $categories が配列なので、$categories に、
$categories = array_push( $categories, new XML_RPC_Value( "カテゴリ名1", "string") ); $categories = array_push( $categories, new XML_RPC_Value( "カテゴリ名2", "string") ); $categories = array_push( $categories, new XML_RPC_Value( "カテゴリ名3", "string") );
こんな感じで、追加していけばOK。
また、日付(dateCreated)は、「 20120726T00:00:00 」(yyyymmddThh:mm:ss)の形式で渡してあげる。
以下、その他、一発でうまくいかなかった事などもろもろ。
ホスト名はトップページ(ホームページ)アドレスでOK。例えばこのブログの場合、
$host = "dev.ontheroad.jp";
http:// とかはなしで。
ホストのアドレス($xmlrpc_path の値)は、”/xmlrpc.php”。
$xmlrpc_path = "/xmlrpc.php";
あとは、PEAR の XML_PRC をインクルード(require_once)する必要がありますが、インクルードするファイルは、以下からダウンロードできます。
ダウンロード:XML_RPC
解凍したら中にある XML というフォルダを 上記サイトを参考に作ったファイルと同じ階層にアップロードすればOK。
そうすると、
require_once("XML/RPC.php");
で、無事にインクルード(require_once)できます。
ってことで、意外と簡単にできちゃいました。そりゃそーだ。
でわでわ。