XML-RPCでカスタムフィールドの内容を投稿するには?
-
はじめまして。よろしくお願いします。
XML-RPCでの投稿スクリプトを作りたいのですが、カスタムフィールドの内容をどうすれば送信できるのかで詰まっています。
どなたか教えていただければ幸いです。今回、目的は同一サイト内の管理画面外から行う投稿です。(ログインせずに下書き状態で投稿したい)
ですので、メール投稿やWordPressの表示画面(PostやPage)に作ったフォームから投稿できれば成功なのです。
KtaiEntryの作者さまへカスタムフィールドに対応するにはどうすればよいかをお尋ねしようと思っていたところでした。調べてみますと、Ver.2.5からはカスタムフィールドをXML-RPCで扱うことが出来るようになったとの事だったのでこれは素晴らしいと思い試行錯誤しています。
PEARのXML/RPCライブラリを使い、とりあえずタイトル、本文まではエントリーすることができました。
受け取り側のWordpressスクリプト(xmlrpc.php)には受け取れる関数があります。
+++++++++++++++++++++++++++++++++++++
line:1606
if ( isset($content_struct[‘custom_fields’]) ) {
$this->set_custom_fields($post_ID, $content_struct[‘custom_fields’]);
}line:247
function set_custom_fields($post_id, $fields)
++++++++++++++++++++++++++++++++++++この $content_struct[‘custom_fields’] へ送るためのスクリプトで詰まっています。
カスタムフィールドを送信するためにはここにあるように、
http://comox.textdrive.com/pipermail/wp-xmlrpc/2007-November/000103.html` “custom_fields” = (
{id = 129; key = city; value = Sacramento; },
{id = 130; key = city; value = Sandy; }
)`のような配列で送ればよいと思うのですが、XML/RPCライブラリに合うように書き換えることが出来ず、
new XML_RPC_Value() に多次元配列をどう入れるのかわからないまま適当に書いてしまっています。PEARのドキュメント
http://pear.php.net/manual/ja/package.webservices.xml-rpc.api.phpまた、id = foo を書かないと新しく meta_idを振ってくれるとありますのでそのとおりにしました。
ご指導よろしくお願いします。
<?php require_once("XML/RPC.php"); //XML-RPC package 読み込み $GLOBALS['XML_RPC_defencoding'] = "UTF-8"; //XML-RPCインタフェース、ユーザ定義 $mt_host = "xxx.com";//サイトURL $mt_xmlrpc_path = "xmlrpc.php"; $port = 80; $mt_user = "xxxx"; // ログインID $mt_xmlrpc_passwd = "xxxxxx";//ログインPW //クライアントの作成 $myClient = new XML_RPC_client( $mt_xmlrpc_path, $mt_host, $port ); $appkey = new XML_RPC_Value( '', 'string' ); $username = new XML_RPC_Value( $mt_user, 'string' ); $passwd = new XML_RPC_Value( $mt_xmlrpc_passwd, 'string' ); //空の配列作成 $custom_fields = array(); $custom_field['key'] = "company_name"; $custom_field['value'] = "hoge"; //カスタムフィールズ(複数のSアリ)に各カスタムフィールドを追加 array_push($custom_fields, $custom_field); $content = new XML_RPC_Value(array( 'title'=> new XML_RPC_Value('タイトルが入ります', 'string'), 'description'=> new XML_RPC_Value("本文が入ります", 'string'), 'custom_fields'=> new XML_RPC_Value($custom_fields,'struct') ), 'struct' ); $publish = new XML_RPC_Value( 0, 'boolean' ); //下書きとして投稿 //書き込み $myMessage = new XML_RPC_Message( 'metaWeblog.newPost', array($appkey, $username, $passwd, $content, $publish) ); //メッセージ送信 $myResponse = $myClient->send($myMessage); $myBlogs = $myResponse->value(); //ブログID取得 $blogId = $myBlogs->me['string']; //ブログID出力 print_r($blogId); ?>
- トピック「XML-RPCでカスタムフィールドの内容を投稿するには?」には新たに返信することはできません。