WordPress - Ruby で XML-RPC 投稿!
Updated:
XML-RPC とは、インターネット上でリモートプロシージャコールを実行するためのプロトコルです。 WordPress を例にとると、外部から投稿できたり色々な事ができます。
WordPress への XML-RPC 投稿というと、よくあるのは PHP からの投稿です。 しかし、当方は一応 Rubyist なので、今回は Ruby から WordPress への投稿を試してみました。
作業記録
0. はじめに
WordPress の場合、ホーム配下の “xmlrpc.php” に対して投稿を行うと、処理が出来るようになっています。 当然、Ruby が利用可能の状態である事。 今回使用したのは Ruby 1.9.3-p194 です。 また、Ruby にはデフォルトで XML-RPC クライアントを利用できるライブラリが入っています。新たなインストールは不要です。
1. WordPress の設定
まず、WordPress で XML-RPC 投稿ができるように設定します。 設定画面の [設定] - [投稿設定] を開き、「リモート投稿」の “XML-RPC(WordPress、Movable Type、MetaWeblog および Blogger XML-RPC 投稿プロトコルを有効にする。)” にチェックを入れて、「変更を保存」をクリックします。
2. テストスクリプト作成
投稿テスト用の Ruby スクリプトを作成します。 以下が今回作成したスクリプトです。
# -*- encoding: utf-8 -*-
require 'xmlrpc/client'
# ユーザ情報
user = 'username'
password = 'password'
# 投稿区分 ( 0 : 下書き登録, 1 : 即時投稿 )
publish = 1
# 記事タイトル
title = "テスト投稿"
# 投稿内容 ( タグも使用可 )
description = "1. XML-RPC による投稿のテストです。\n"
description << "2. XML-RPC による投稿のテストです。\n"
description << "3. XML-RPC による投稿のテストです。\n"
# カテゴリ ( 配列で設定 )
category = [ "ブログ" ]
# タグ ( 配列で設定 )
keywords = [ "WordPress" ]
# インスタンス化
# ( "http://127.0.0.1/wordpress/xmlrpc.php" に投稿する例 )
client = XMLRPC::Client.new( '127.0.0.1', '/wordpress/xmlrpc.php')
# 投稿情報構造体 ( ハッシュで設定 )
struct = {
'title' => title,
'description' => description,
'categories' => category,
'mt_keywords' => keywords
}
# 投稿の実行
# ( "metaWeblog.newPost" というプロシージャを
# ブログID、ユーザ名、ユーザパスワード、投稿情報構造体、投稿区分
# の引数を付けてコールすると、ポストID が返る )
id = client.call(
"metaWeblog.newPost",
1,
user,
password,
struct,
publish
)
puts "PostID: #{id}"
日付を指定する事も可能です。(要 GMT 変換) 予約投稿については未調査なので良くわかりません。
3. Ruby スクリプト実行・確認
作成した Ruby スクリプトを実行後、ブラウザで WordPress の URL にアクセスし投稿されているか確認します。
参考サイト
以前、ブログのアクセス状況を集計する Ruby スクリプトを作っていました。 その集計スクリプトを流用して毎月1日に集計状況を自動で投稿するようにしてみました。(今回の手法の応用として)
一つ気になるのは、XML-RPC で投稿した場合に、今まで行っていた Twitter との連携が取れるかどうか。。。
以上です。
Comments