RubyでWordPressへXML-RPC投稿

Pocket

RubyにはXML-RPCクライアントのためのライブラリが
入っているので、スクリプトから標準でブログに投稿できる。

PHPでの投稿方法だが、この記事を参考にさせていただいた。

XML-RPCを使ってWordPressへ投稿する: のほほんやろうなFX

WordPressで作成したブログの場合はxmlrpc.phpが投稿先となる。

URI: http://example.com/xmlrpc.php

まずは、XML-RPC投稿を許可する設定をする。

[設定]->[投稿設定]
[リモート投稿]のXML-RPCにチェックを入れて設定を保存。

xmlrpc投稿を有効にする

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

関連記事

Pocket

1 Comment

コメントを残す

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