[PHP] XML-RPCを使ってWordPressに投稿する

WordPress

ちょっとスクリプトからWordPressに投稿したいということがありまして、PHPからWordPressに投稿する方法はないかと模索しておりました。

そこでタイムリーに以下のページでXML-RPCについてのまとめ記事が!


最初ここで書いてあるコードを使おうと思ったのですが、うまくいかず、何回も質問のコメントをしてしまいました。その節はありがとうございました。

ということで、以下のコードWordPressにXML-RPCを使って投稿できるようになりました。

というか、ほとんどパクリなんですが・・・

まず、必要条件としては、PEARのXML/PRCがインストールされていることが必要です。

まずは以下のようにXML_RPCをインストールしてください。

# pear install XML_RPC

では、以下、WordPressへの投稿スクリプトです。


<?php
//PEAR XML_PRCの読み出し
require_once("XML/RPC.php");

$host = "ホスト名";
$xmlrpc_path = "/パス/xmlrpc.php";
$appkey = '';
$user = 'ユーザー名';
$passwd ='パスワード';

$c = new XML_RPC_client($xmlrpc_path, $host, 80);

$appkey = new XML_RPC_Value($appkey, 'string');
$username = new XML_RPC_Value( $user, 'string' );
$passwd = new XML_RPC_Value( $passwd, 'string' );

$message = new XML_RPC_Message(
'blogger.getUsersBlogs',array($appkey, $username, $passwd)
);

$result = $c->send($message);

if(!$result){
exit('Could not connect to the server.');
} else if( $result->faultCode() ){
exit($result->faultString());
}

$blogs = XML_RPC_decode($result->value());

$blog_id = new XML_RPC_Value($blogs[0]["blogid"], "string");

//--------ここまでがBlogIDの取得----------------------------

$title = "今週の管理人Bookmark (".date('n/j',$oneweek).'-'.date('n/j',time()).')';
$categories = array(
new XML_RPC_Value("カテゴリー名", "string"),
);
$description = "ここに本文を入れます。HTML も書けます<p>段落</p>";
$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'),
'wp_slug' => new XML_RPC_Value('bookmarks-of-'.date('Yms'),'string'),
'dateCreated' => new XML_RPC_Value(time(), 'dateTime.iso8601')
),
'struct');

$publish = new XML_RPC_Value(1, "boolean");

$message = new XML_RPC_Message(
'metaWeblog.newPost',
array($blog_id, $username, $passwd, $content, $publish)
);

$result = $c->send($message);

if(!$result){
exit('Could not connect to the server.');
} else if( $result->faultCode() ){
exit($result->faultString());
}
?>

参考ページとは違う点としては、スラッグ(wp_slug)を追加している点でしょうか(^^;)

あと、前半部分はblogIDを取得する部分なんですが、決め打ちでBlogIDが分かっている場合は前半部分はいらないですね。

こんな感じで投稿できるようになります。

今回のスクリプトを考えるのに、いろいろ参考になるページを徘徊したので、ついでに紹介します。


ほんと、自分のプログラムに対する非力さを痛感する日々です(^^;)

もっと自分で勉強しなくちゃダメですね~。

あと、もっとオブジェクト脳にならなければならないですね(^^;)

WordPress 2.7対応「導入&カスタマイズ」実践ガイド―個人ブログも企業サイトも簡単&無料で構築できる!