Vk Api. vk_upload_photo не загружает фотографии в группу

Я использую ключ от группы Вк с полным доступом. Но картинки не отсылаються. Вот мой код - что я делаю не так? просьба исправить и объяснить.

function vk_upload_photo($upload_url, $image_url) {
    $image = wp_remote_get($image_url);
    if (is_wp_error($image)) {
        return false;
    }

    // Создаем временный файл для изображения
    $tmp_file = wp_tempnam($image_url);
    if (!$tmp_file) {
        return false;
    }
    file_put_contents($tmp_file, wp_remote_retrieve_body($image));

    // Подготавливаем данные для отправки
    $file_contents = file_get_contents($tmp_file);
    $boundary = wp_generate_password(24);

    $headers = [
        'Content-Type' => 'multipart/form-data; boundary=' . $boundary,
    ];

    $body = '--' . $boundary . "\r\n";
    $body .= 'Content-Disposition: form-data; name="photo"; filename="photo.jpg"' . "\r\n";
    $body .= "Content-Type: image/jpeg\r\n\r\n";
    $body .= $file_contents . "\r\n";
    $body .= '--' . $boundary . '--';

    // Отправляем изображение на сервер загрузки ВК
    $response = wp_remote_post($upload_url, [
        'headers' => $headers,
        'body'    => $body,
        'timeout' => 60,
    ]);

    // Удаляем временный файл
    unlink($tmp_file);

    if (is_wp_error($response)) {
        return false;
    }

    $response_body = wp_remote_retrieve_body($response);
    $upload_result = json_decode($response_body, true);

    if (!isset($upload_result['photo'])) {
        return false;
    }

    // Сохраняем фотографию на стене группы
    $params = [
        'access_token' => get_option('vk_access_token'),
        'v'            => '5.131',
        'group_id'     => get_option('vk_group_id'),
        'server'       => $upload_result['server'],
        'photo'        => $upload_result['photo'],
        'hash'         => $upload_result['hash'],
    ];

    $save_response = wp_remote_post('https://api.vk.com/method/photos.saveWallPhoto', [
        'body' => $params,
    ]);

    if (is_wp_error($save_response)) {
        return false;
    }

    $save_body = wp_remote_retrieve_body($save_response);
    $save_result = json_decode($save_body, true);

    if (isset($save_result['response'][0])) {
        return $save_result['response'][0];
    }

    return false;
}

Ответы (0 шт):