[wordpress] XML-RPCを使って外部から記事を投稿する

お仕事でWordPressに外部から記事を投稿する機能を実装しなきゃということでググっていたところXML-RPCと呼ばれるライブラリを使った手法がよく目にとまり詳しく調べてみると自分がしたいことにベターだったので備忘録も兼ねて軽く紹介したいと思います。

今回とくに参考にさせてもらったのが「XML-RPC を使用する方法 | Sun Limited Mt.」さんのブログです。ほぼ真似れば外部投稿の仕組みはサクっと出来上がっちゃいます。なので紹介されているコードで肝となる箇所を搔い摘んで書きたいと思います。

今回はWordPressということでPEARのパッケージにあるXML_RPCを使います。各々環境に合わせてインストール形式なりダウンロード形式なり導入してください。「XML_RPC」で配布されています。

XML_RPCを紹介している記事の大半でWordPressの管理画面「設定 > 投稿設定」からXML_RPCに関するチェックボックスを有効にする件がありますがこの記事を書いている現在(Ver 3.5.x系)は該当の項目がないのでとくに何かをする必要はないようです(僕の環境化では動作しています)。

では初めにXML_RPCを使って外部からWordPressへあーだこーだやり取りする設定について。

require_once("XML/RPC.php");

$host = "localhost.com";
$xmlrpc_path = "/xmlrpc.php";
$appkey = '';
$user = 'username';
$passwd ='password';

1行目で導入したPEARのXML_RPCをインクルードしています。各々環境に合わせてパスを変更する必要があります。「$host」にWordPressをインストールしたホストを設定しています。「$xmlrpc_path」でインストールしたWordPress配下にxmlrpc.phpというファイルがあるのでそれを読み込んでいます。各々環境に合わせてパスを変更する必要があります。「$user」「$passwd」に投稿者用のアカウント情報を設定しています。

次に記事を投稿する設定について。

$title = 'TITLE';
$categories = array(
new XML_RPC_Value("category name1", "string")
);
$description = "ここに本文を入れます。<p>HTML も書けます</p><img src='".$image_url."'>";

$content = new XML_RPC_Value(
array(
'title' => new XML_RPC_Value($title, 'string'),
'categories' => new XML_RPC_Value($categories, 'array'),
'description' => new XML_RPC_Value($description, 'string'),
'dateCreated' => new XML_RPC_Value(time(), 'dateTime.iso8601')
),
'struct');
$publish = new XML_RPC_Value(1, "boolean");

「$title」で記事のタイトルを設定しています。「$categories」のXML_RPC_Value第1引数に記事のカテゴリーを指定しています。カテゴリー名をそのまま記述します。また配列の値を増やせば複数のカテゴリー指定も可能です。「$description」で記事の本文を設定しています。「$publish」のXML_RPC_Value第1引数で投稿した記事を下書きか公開かを設定しています(0:下書き, 1:公開)。

これで動作自体はします。あとは各自したいようにカスタムしていく必要がありますが煩わしい部分が既に揃っているのが嬉しい限りです。タグやらスラグやら色々なオプションもあり中でもカスタムフィールドの投稿と画像アップロードが可能なのは魅了的です。アイキャッチ画像の処理がちょっと面倒なので試行錯誤している最中ですが巧くいって気が向いたら紹介したいと思います。

  • 2013.02.06
  • お仕事っぽいこと