Публикация изображений через wp.uploadFile XML RPC - PullRequest
0 голосов
/ 15 января 2012

Я хочу массово загрузить изображения в мой WordPress блог через XML RPC, а затем поместить изображения в WordPress пост через тег img.

Но мои 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. Как правильно отправить изображение в wordpress с помощью метода wp.uploadFile или metaWeblog.newPost.

Ответы [ 2 ]

1 голос
/ 12 декабря 2012

Я столкнулся с точно такой же проблемой, здесь фрагмент, который я использую для управления вложениями к сообщениям при синхронизации публикаций с различными экземплярами 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> ';
    }
}
1 голос
/ 18 января 2012

Вы должны использовать IXR_Base64 (data) для преобразования данных в реальный объект данных, а не просто в строку с содержимым 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,
);
...