2012-01-15 20 views
0

XML RPC経由で画像をWordPressブログにアップロードし、画像をimgタグを使ってWordPressに投稿します。wp.uploadFile経由で画像を投稿するXML RPC

しかし、私のwordpressとwp.uploadFileは、有効な画像の代わりにbase64エンコーディングファイルを返しません。

ここに私のPHPコードです。

<?php $q = new IXR_Client('http://myblog.com/xmlrpc.php'); 
$mediaarray = array(
"name" => $image_name, 
"type" => $atrybuty[mime], 
"bits" => base64_encode($file), 
"overwrite" => false, 
); 
if(!$q->query('wp.uploadFile', 1, $uzyt, $has, $mediaarray)){ 

    echo $q->getErrorCode().': '.$q->getErrorMessage(); 
} 

var_dump($q->getResponse()); 

応答が

array(3) { ["file"]=> string(24) "Pein_by_azurewrath87.jpg" 

["url"]=> string(84) "http://myblog.com/wp-content/uploads/2012/01/Pein_by_azurewrath87.jpg" ["type"]=> string(10) "image/jpeg" }

しかし、画像base64_encodetです。 wp.​​uploadFileまたはmetaWeblog.newPostメソッドを使用してwordpressに画像を送信する方法

答えて

1

base64コンテンツの文字列だけでなく、実際のデータオブジェクトにデータを変換するには、IXR_Base64(データ)を使用する必要があります。

<?php $q = new IXR_Client('http://myblog.com/xmlrpc.php'); 
$mediaarray = array(
"name" => $image_name, 
"type" => $atrybuty[mime], 
"bits" => new IXR_Base64($file), 
"overwrite" => false, 
); 
1

私はここでまったく同じ問題、同期の記事はWordPressの異なるインスタンスをaccrosssながら、私はポストの添付ファイルを管理するために使用するスニペットに遭遇しました。

あなたはこのスニペットをテストしたい場合は、添付ファイルを持っているポストIDを持つだけで設定$ post_to_sync-> post_idの:

/****************************BEGIN ATTACHMENTS****************************/ 
//get attachments from the original content 
$attachments = & get_children(array(
     'post_parent' => $post_to_sync->post_id, //replace here with a post id 
     'post_type' => 'attachment', 
)); 
if ($attachments != array()) { 
    foreach ($attachments as $attachment_id => $attachment) { 
     $params = array(
       0, 
       XMLRPC_USER, 
       XMLRPC_PWD, 
       array(
         'name' => basename(get_attached_file($attachment_id)), //$attachment->post_title, 
         'type' => $attachment->post_mime_type, 
         'bits' => new IXR_Base64 (file_get_contents (get_attached_file($attachment_id))), 
         'post_parent' => $id_int, 
       ) 
     ); 
     $client->query('metaWeblog.newMediaObject',$params) ; 
     echo '<br> <br> '; 
     var_dump($client->getResponse()); 
     echo '<br> <br> ';echo '<br> <br> ';echo '<br> <br> '; 
    } 
}