RubyにはXML-RPCクライアントのためのライブラリが
入っているので、スクリプトから標準でブログに投稿できる。
PHPでの投稿方法だが、この記事を参考にさせていただいた。
XML-RPCを使ってWordPressへ投稿する: のほほんやろうなFX
WordPressで作成したブログの場合はxmlrpc.phpが投稿先となる。
URI: http://example.com/xmlrpc.php
まずは、XML-RPC投稿を許可する設定をする。
[設定]->[投稿設定]
[リモート投稿]のXML-RPCにチェックを入れて設定を保存。
これで、WordPress、 Movable Type、 MetaWeblog および Blogger XML-RPC
投稿プロトコルが有効になる。
各プロトコルの仕様については下記サイト参照。
WordPress本家 XML-RPC Support
http://codex.wordpress.org/XML-RPC_Support
require 'xmlrpc/client' user = 'hogehoge' pass = 'password' publish = 1 server = XMLRPC::Client.new('example.com', '/xmlrpc.php') struct = { 'title'=>'テスト投稿', 'description'=>'投稿内容投稿内容' } id = server.call("metaWeblog.newPost",1,user,pass,struct,publish) puts "Post ID: #{id}"
簡単な投稿だけであれば、これだけでXML-RPC投稿が出来る。
publishを0にすれば「下書き」で登録される。
WordPress APIの仕様には新規投稿なくmetaWeblogで投稿することになる。
日付を入力して「下書き」にする場合は次の通り。
Timeでparseを使うには明示的にrequire ‘time’が必要です。
require 'time' require 'xmlrpc/client' user = 'hogehoge' pass = 'password' publish = 0 date = Time.parse('2010/02/13 12:22') server = XMLRPC::Client.new('example.com', '/xmlrpc.php') struct = { 'title'=>'テスト投稿2', 'description'=>'投稿内容投稿内容2', 'dateCreated'=>date } id = server.call("metaWeblog.newPost",1,user,pass,struct,publish) puts "Post ID: #{id}"
dateCreatedの指定はちょっとシビアでエラーがでることもあるかもしれない。
文字列で色々設定してみたけどうまくいかない。
rubyの場合はTimeをそのまま渡してしまえば大丈夫らしいのので
それでよしとした。