PEARのXMLRPCライブラリ使用によるカスタムフィールドへの代入
-
PEARのXMLRPCライブラリを利用した外部からのワードプレスへの記事投稿をテストしております。
サーバ情報:
WordPressバージョン:3.4.2
PHPバージョン:5.1.6
MySQLバージョン:5.0.95色々とネットから情報を寄せ集めて以下のソースにブログIDを投げて記事投稿するところまではうまくいきました。
//うまくいったPHP実行ファイルソース(カスタムフィールド無し)
$title = ‘テストタイトル’.date(‘n/j’,$oneweek).’-‘.date(‘n/j’,time()).’)’;
$categories = array(
new XML_RPC_Value(‘テストカテゴリー’, ‘string’),
);
$description = “HTMLテスト本文”;
$tags = array(
new XML_RPC_Value(‘テストタグ1’, ‘string’),
new XML_RPC_Value(‘テストタグ2’, ‘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’),
‘mt_keywords’ => new XML_RPC_Value($tags, ‘array’),
‘wp_slug’ => new XML_RPC_Value(‘テストスラッグ’.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());
}
?>しかし、さらにプラグインで利用しているSEOツールの「All in One SEO Pack」のカスタムフィールドへの代入がうまくいきません。
具体的には「All in One SEO Pack」の場合、DB内のwp_postmetaテーブル内にSEO向けのタイトル、SEO向けのディスクリプション、SEO向けのキーワードが格納されているみたいで、wp_postmetaテーブルには4つのフィールド(meta_id,post_id,meta_key,meta_value)があります。
今回の外部投稿において例えばSEO向けのタイトルであれば、meta_keyフィールドに「_aioseop_title」という値を代入してmeta_valueフィールドに「SEOテストタイトル」という値を代入すれば良いと思われるのですが、まず第一歩としてカスタムフィールド代入(meta_keyへの代入のみ)部分を追加した以下のソースを実行してphpMyAdminで直接DBを確認するとフィールド「meta_key」に’meta_key’という値が代入されて、フィールド「meta_value」に’_aioseop_title’の値が代入されてしまっています。(本来であれば、フィールド「meta_key」に’_aioseop_title’を代入したい。)
//うまくいかないカスタムフィールド代入部分追加ソース
$title = ‘テストタイトル’.date(‘n/j’,$oneweek).’-‘.date(‘n/j’,time()).’)’;
$categories = array(
new XML_RPC_Value(‘テストカテゴリー’, ‘string’),
);
$description = “HTMLテスト本文”;
$tags = array(
new XML_RPC_Value(‘テストタグ1’, ‘string’),
new XML_RPC_Value(‘テストタグ2’, ‘string’)
);
$custom_fields = array();
$custom_fields[] = new XML_RPC_Value(
array(
‘key’ => new XML_RPC_Value(‘meta_key’,’string’),
‘value’ => new XML_RPC_Value(‘_aioseop_title’,’string’)
),’struct’);
$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’),
‘mt_keywords’ => new XML_RPC_Value($tags, ‘array’),
‘wp_slug’ => new XML_RPC_Value(‘テストスラッグ’.date(‘Yms’),’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());
}
?>meta_key、meta_valueはあくまでフィールド指定の為のkeyのつもりなのですが、なぜか値として入ってしまっている感じです。
どこかおかしな部分、気になる部分などございますでしょうか?
- トピック「PEARのXMLRPCライブラリ使用によるカスタムフィールドへの代入」には新たに返信することはできません。