[cakephp]CakephpからWordPressにXML-RPCで投稿する

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)