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 との連携が取れるかどうか。。。

以上です。





 

Sponsored Link

 

Comments