Woocommerce API - добавьте дополнительные изображения - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь добавить другое изображение в продукт с помощью API Woocommerce.

Однако API перезаписывает существующие изображения.Я пробовал без идентификатора, без названия, уникального идентификатора и т. Д.

Есть ли способ добавить к нему новое изображение, не касаясь существующего изображения?

{"images": [
    {
        "title": "temp1",
        "position": 3,
        "src": "https://www.example.com/myimage.jpg"
    }]}

Получаетсячто вы можете использовать существующее изображение, если вы используете внутренний идентификатор сообщения изображения в качестве тега ID:

{"images": [{"id": 587}]} Это перезапишет существующее изображение.

Итак, если я смогу найти способ получить все идентификаторы изображений продукта, я могу добавить их все и добавить новое изображение в конец ...

см.: WooCommerce API создает изображения в медиа, даже если они существуют

1 Ответ

0 голосов
/ 14 декабря 2018

Так что я не мог понять, как остановить woocommerce от перезаписи всех изображений, когда я хотел добавить одно, поэтому я написал код, который добавляет новое изображение в список изображений.

//GET CURRENT IMAGE IDs FOR A PRODUCT AND BUILD JSON OF THEM

    $product_id = '652';
    $product = new WC_product($product_id);
    $attachment_ids = $product->get_gallery_image_ids();
    array_unshift($attachment_ids, get_post_thumbnail_id($product_id));

//BUILD JSON OF EXISTING IMAGE IDS
    foreach( $attachment_ids as $attachment_id ) {
    $json_images .= '{"id":' . $attachment_id . '}';
    $json_images .= ($i<count($attachment_ids) ? ',' : '');
    }
    echo "<br>" . $json_images;

//POST AN IMAGE TO AN AUCTION
    $host = 'https://beta.blohbloh.com/wp-json/wc/v3/products/' . $product_id;
    $consumer_key='ck_2364';
    $consumer_secret='cs_12ce';

//NEEDS TO INCLUDE ALL PREVIOUS IMAGE IDS IN JSON FORMAT
    $payload = '{"images": [';
    $payload .=  $json_images;
    $payload .= '{"src":';
//sample image to append
    $payload .= '"https://somesite.com/someimage.jpg"';
    $payload .= '}]}';

    $process = curl_init($host);
    curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $additionalHeaders));
    curl_setopt($process, CURLOPT_HEADER, 1);
    curl_setopt($process, CURLOPT_USERPWD, $consumer_key . ":" . $consumer_secret);
    curl_setopt($process, CURLOPT_TIMEOUT, 30);
    //curl_setopt($process, CURLOPT_POST, 1);
    //curl_setopt($process, CURLOPT_POSTFIELDS, $payload);

    curl_setopt($process, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($process, CURLOPT_POSTFIELDS,$payload);

    curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
    $return = curl_exec($process);
    curl_close($process);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...