REST API를 사용하여 미디어 업로드


9

JSON REST API를 사용하여 미디어를 WordPress 사이트에 업로드 할 때 문제가 있습니다.

다음 코드를 사용하면 사진을 업로드 할 수 있지만 이름은 물론 정보도 할당되지 않습니다. 실제로 이름은 자동으로 URL 및 파일 이름 (확장자없이)이됩니다.

$username = "ZX";
$password = "ZX";
$host = 'http://ZX.com/wp-json/wp/v2/media';
$data = json_encode($data);
$file = '/Users/xx.png';
$imagedata  = file_get_contents($file);
$process = curl_init($host); 
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($process, CURLOPT_TIMEOUT, 50);
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_POSTFIELDS, $data);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type:image/png','Content-Disposition:attachment;filename='.$file));
$return = curl_exec($process);
print_r($return);

다음과 같은 데이터를 업로드에 어떻게 할당합니까?

$data = array(
  "status" => "draft",
  "title" => "Photo media",       
  "description" => "Photo media1",
  "media_type" => "image",
  "alt_text" => "alternate text"
  );

답변:


3

이것은 API를 통해 불가능합니다. 당신이해야 할 이미지를 직접 가져 오기API로 데이터를 보낼 자신. 인용구

– @Dan (삭제 된) 답변에 언급 된 GitHub 문제에 대한 Ryan의 인용 입니다.

이미지를 측면으로 올리는 방법

점을 유의 media_sideload_image()반환 값의 인스턴스가 될 수 있습니다 \WP_Error뿐만 아니라. 그런 다음 게시물에 첨부하면됩니다. 아주 간단합니다.

$media = media_sideload_image( 
    'http://i.imgur.com/bcJvAj0.jpg', 
    $post->ID, 
    'Some image description', 
    'src'
);

if ( ! empty( $media ) and ! is_wp_error( $media ) ) {
    // reference new image to set as featured
    $attachments = get_posts( [
        'post_type'      => 'attachment',
        'posts_per_page' => 1,
        'post_status'    => 'any',
        'post_parent'    => $post->ID,
    ] );

    if ( is_array( $attachments ) ) {
        set_post_thumbnail( $post->ID, $attachments[0]->ID );
    }

    // Test print our image. The return value is the src of the sideloaded image.
    printf( '<img src="%s" />', $media );
}

내부

API를 사용해야하는 이유를 설명하는 코어를 통한 짧은 역 추적 :

의 소스를 살펴보고에 대한 래퍼를 사용 media_sideload_image()하는 download_url()내부적으로 사용되는지 확인하십시오 . 이는 전체 WP API를 제공하면서도 안전하고 디버깅 가능하며 사용하기 쉽다는 것을 의미합니다. 의 반환 값 은의 결과이며 , 가능한 모든 위치를 고려하고 (많음이 있음) 위치를 수 있는지 확인합니다 . 는 필요한 모든 첨부 파일 데이터 및 메타 데이터를 생성합니다.wp_safe_remote_get()\WP_HTTP::get()download_url()wp_tempnam()/tmpmedia_handle_sideload()


인용 된 질문은 무엇입니까? 이 방법이 여전히 유효합니까?
Brethlosze

인용문의 업데이트 및 GitHub – 이슈 링크를 참조하십시오. 왜 유효하지 않습니까? 다시 확인하려면 내부 의 라인을 따라 토끼 구멍을 따라 아래로 연결된 현재 WP 버전을 비교하십시오. 그렇게 어렵지 않습니다.
카이저

이 답변은 2016 년입니다. 2019 년 현재 REST API가 파일을 media객체에 업로드하는 것을 처리 할 수 ​​없으므로 WP 함수에 집중할 수 있는지 확인하고 싶습니다 .
Brethlosze

@Brethlosze : 내가 말한 것처럼 핵심 코드를 둘러보십시오. 지금 당장 WP로 작업하지 않으므로 해당 주제에 대한 새로운 정보가 없습니다.
카이저
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.