Я хочу, чтобы выгружать изображения в свой блог WordPress через XML RPC, а затем помещать изображения в сообщение WordPress через тег img.
Но мой wordpress и wp.uploadFile не возвращают файл encodet 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://img.ruphp.com/php/Pein_by_azurewrath87.jpg" ["type"]=> string(10) "image/jpeg" }
Но изображение base64_encodet. Как правильно отправить изображение в wordpress с помощью метода wp.uploadFile или metaWeblog.newPost.
Вы должны использовать IXR_Base64 (данные) для преобразования данных в фактический объект данных, а не только строку с содержимым 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, );
Я столкнулся точно с той же проблемой, здесь фрагмент, который я использую для управления вложениями в сообщениях, при синхронизации сообщений в разных экземплярах wordpress.
Если вы хотите протестировать этот фрагмент, просто установите $ 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> '; } }