WordPressの使い方マニュアル 商業サイトからアフィリエイトサイトまでつくれるWordPressの使い方を学ぼう

WordPress攻略本

WordPress カスタマイズ

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

WordPress運営が楽になるおすすめのサーバーとテーマをご紹介

WordPressおすすめのサーバー・テーマ

スポンサードリンク

-WordPress, カスタマイズ
-, ,

Copyright© WordPress攻略本 , 2018 All Rights Reserved.