Unityアセットストアセール中!

WordPress内からXML-RPCを利用して記事投稿を行う方法

<景品表示法に基づく表記 > 本サイトのコンテンツには、商品プロモーションが含まれている場合があります。
スポンサードリンク

xml-RPC
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
投稿先の管理画面で

設定 > 投稿設定 > リモート投稿

の「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を選び保存します。
xml-RPC

[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-&gt;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' =&gt; 'field_key2', 'value' =&gt; 'field_key2のvalue')

                             ),
//記事本文
 'description'       =&gt; 'テスト投稿の本文',

 'dateCreated'       =&gt; null,
 //記事のスラッグになる
 'wp_slug'           =&gt; 'xml-rpc-testpost',

 'mt_allow_comments' =&gt; null,

 'mt_allow_pings'    =&gt; null,

 'mt_convert_breaks' =&gt; null,

 'mt_text_more'      =&gt; null,

 //記事の抜粋に入る
‘mt_excerpt’ => ‘WordPress XML-RPCのテスト’,
//記事のタグに入る
‘mt_keywords’ => array(‘icon’, ‘インスピレーション’),

 'mt_tb_ping_urls'   =&gt; 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を実行するたびに投稿記事が作成されるようになります。

スポンサードリンク
[WordPressのライティング向けプラグイン]
ワードプレスオリジナルプラグイン >>

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

スポンサーリンク

コメント

コメント一覧 (1件)

コメントする

目次
閉じる