XML-RPCを使った投稿はいくつか記事を書いていますが、バージョンアップとかで仕様がちょっとづつ変わっているようですね。
今回は、Cakephpのプラグイン「CakePHP-Wordpress-Datasource」を使用します。
IXR_Library.phpという有名はライブラリを内部的に使用しているので、このライブラリを直接使用しても同じ結果になると思います。
bootstrap.php
CakePlugin::load('WordpressSource', array('routes' => false, 'bootstrap' => false));
database.php
public $wp = array( 'datasource' => 'WordpressSource.WordpressSource', 'host' => 'ブログのホスト名', // example.com 'path' => '/xmlrpc.php', // XML-RPCまでのパス。 'username' => 'ユーザー名', 'password' => 'パスワード', 'blog_id' => 0 );
ブログのURLが、「http://example.com/blog/」の場合は、ホストは「example.com」、パスは「/blog/xml-rpc.php」になります。
投稿するControllerでdatasourceを指定して
public function beforeFilter() { parent::beforeFilter(); $this->WP = ConnectionManager::getDataSource('wp'); }
投稿する
$posts = array( 'post_date' => 投稿日, 'post_status' => 'publish', 'post_title' => 投稿タイトル, 'post_content' => 投稿本文, 'post_name' => スラッグ, 'terms_names' => array( 'category' => array(カテゴリー1,カテゴリー2), 'post_tag' => array(タグ1,タグ2) ) ); $res = $this->WP->newPost($posts);
リターンはポストIDです。
参考:PHP XML-RPCを使用してWordpressブログに記事を投稿する方法 | WordPressプラグイン 役立つ情報 – luna plate
参考:WordPressへXML-RPCとPHPで外部投稿(実用編) | 猫力
参考:WordPress XMLRPC – Posting Content From Outside WordPress Admin Panel
参考:XML-RPC WordPress API/Posts « WordPress Codex
参考:XML-RPC WordPress API/Taxonomies « WordPress Codex
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)