WordPress内からXML-RPCを利用して記事投稿を行う方法です。
XML-RPCとは
RPCプロトコルの一種であり、エンコード(符号化)にXMLを採用し、転送機構に HTTP を採用している。非常に単純なプロトコルで、少数のデータ型やコマンドだけを定義しているだけであり、その仕様は2枚の紙にまとめられる。これは多くのRPCシステムが膨大な量の規格を規定し、実装に多量のプログラミングを要することに比べると、際立った特徴と言える
XML-RPC – Wikipedia
XML-RPCを利用するとWordPressの管理画面に入ることなく
WordPressの投稿記事を書くことができます。
このエントリではWordPressでphpを実行して違うWordPress記事投稿を行います。
手順
参照したソースコードは
[WordPress]XML-RPCを利用して外部から投稿したりする。 | WEBプログラム覚書
のものを利用させていただいています。
[1] XML-RPCの設定を行います。
設定 > 投稿設定 > リモート投稿
の「XML-RPC WordPress、Movable Type、MetaWeblog および Blogger XML-RPC 投稿プロトコルを有効にする。」
にチェックをいれて設定を保存します。
[2]WordPress内でZend Frameworkが利用できるように
『WP Zend Library』のプラグインをインストールします。
詳細は
『WP Zend Library』WordPressでZend Frameworkを使えるようにするプラグイン | WordPress攻略本
に記載しています。
[3]phpを書きこむページを用意する
編集するページはどこでもかまいません。
例としてphpを実行するための固定ページを新規に用意します。
theme内のpage.phpを複製して、ファイル名をtest-xml-rpc.phpとします。
test-xml-rpc.phpの冒頭部分にテンプレート名を指定します。
[php]
<?php
/*
Template Name: test-xml-rpc.php
*/
?>
[/php]
保存後、固定ページ作成画面の
ページ属性 > テンプレートからtest-xml-rpc.phpを選び保存します。
[4]phpを編集する
XML-RPCのライブラリとして、 Zend FrameworkのZend_XmlRpc_Clientを利用します。
Zend Framework: Documentation: Zend_XmlRpc_Client – Zend Framework Manual
[php]
<?php
// URI、ログインユーザ名とパスワードの設定
$uri = ‘http://wordpress.domain/xmlrpc.php’;
// 投稿先WordPressのログインユーザー名
$user = ‘username’;
// 投稿先WordPressのログインパスワード
$passwd = ‘password’;
$client = new Zend_XmlRpc_Client($uri);
// 接続してブログの基本情報を取得
// 失敗すると例外がスローされる。
try {
//wp.getUsersBlogsはWordPress内で定義されているメソッドなのでこのまま
$infos = $client->call(‘wp.getUsersBlogs’, array($user, $passwd));
} catch (Zend_Exception $e) {
echo $e->getMessage();
}
echo ‘<h2>ブログの基本情報</h2>’;
echo ‘<pre>’;
var_dump($infos);
echo ‘</pre>’;
// blog ID 基本的に1。
// 3系では複数のブログが管理できるようなので増えるのかも?
$blog_id = $infos[0][‘blogid’];
// 投稿データの作成
$contents = array(
//記事件名
‘title’ => ‘テスト投稿’,
//カテゴリ名を日本語名で指定
‘categories’ => array(‘インテリア’, ‘建築’),
//カスタムフィールドがあれば指定 なければnull
‘custom_fields’ => array(array(‘key’ => ‘field_key1’, ‘value’ => ‘field_key1のvalue’),
array('key' => 'field_key2', 'value' => 'field_key2のvalue')
),
//記事本文
'description' => 'テスト投稿の本文',
'dateCreated' => null,
//記事のスラッグになる
'wp_slug' => 'xml-rpc-testpost',
'mt_allow_comments' => null,
'mt_allow_pings' => null,
'mt_convert_breaks' => null,
'mt_text_more' => null,
//記事の抜粋に入る
‘mt_excerpt’ => ‘WordPress XML-RPCのテスト’,
//記事のタグに入る
‘mt_keywords’ => array(‘icon’, ‘インスピレーション’),
'mt_tb_ping_urls' => null,
);
// 公開設定 falseだと下書きの状態
// true で公開
$publish = false;
// 投稿を実行
//metaWeblog.newPostはWordPress内で定義されているメソッドなのでこのまま
$result = $client->call(‘metaWeblog.newPost’,
array($blog_id, $user, $passwd, $contents, $publish)
);
echo ‘<h2>実行結果 成功するとPost IDが返ってくる</h2>’;
echo ‘<pre>’;
echo $result;
echo ‘</pre>’;
?>
[/php]
test-xml-rpc.phpを実行するたびに投稿記事が作成されるようになります。
コメント
コメント一覧 (1件)
[…] 参考:[WordPress] XML-RPC を使用する方法 | Sun Limited Mt. 参考:WordPress内からXML-RPCを利用して記事投稿を行う方法 | WordPress攻略本 とくに、[PHP] XML-RPCを使ってWordPressに投稿する – Sometime PHP […]