- 投稿: 2011年09月13日 18:33
- 更新: 2011年09月13日 18:33
- ソフトウェア
何番煎じだかわかりませんが,備忘録として.XML-RPCを使って,スクリプトからWordpressに記事を投稿しまくる方法です.参考にしたのは以下のエントリ.
見ればわかりますが,プログラミング言語はPHPです.まずは,何はなくとも,PHPでXML-RPCを扱えないといけないので,PEARからインストールします.
# pear install XML_RPC
続いて,これもサンプルコードそのままなので,深く考えずに,書いていきます.ところが,どっこい!このエントリではカスタムフィールドの扱い方が説明されていません.なんてこったい!これは困りました.今回はカスタムフィールドに値を入れられないと,ものごっつ面倒くさいことになるような件数を突っ込むのです.ですので,どうしてもXML-RPCでやりたいので,調べたところ,以下のエントリがヒットしました.
完璧です.以上より,作成したコードは以下の通り.
require_once("XML/RPC.php");
$host = 'example.com';
$xmlrpc_path = '/wordpress/xmlrpc.php';
$appkey = '';
$user = 'username';
$passwd = 'password';
$title = 'エントリのタイトル';
$categories = array(
new XML_RPC_Value('未分類', 'string'), );
$description = 'ここに本文を入れます.';
$custom_fields = array();
$custom_fields[] = new XML_RPC_Value(
array(
'key' => new XML_RPC_Value('yomi', 'string'),
'value' => new XML_RPC_Value('ふりがな', 'string')
), 'struct');
$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');
$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'),
'custom_fields' => new XML_RPC_Value($custom_fields, 'struct'),
), '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());
}
簡単ね!あとは自動でガンガン投稿するようにゴニョゴニョすれば万事快調.
- Newer: ハートプラス,はじめました
- Older: WellnessLINKによる定期レポート~2011年8月