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をそのまま渡してしまえば大丈夫らしいのので
それでよしとした。