401 Ошибка при попытке удалить изображение через REST API Woocommerce

Итак, я пытаюсь удалить продукт вместе с изображениями через REST API, но он удаляет все, КРОМЕ изображений. Я тестировал его отдельно, чтобы удалить изображение, но выдал следующую ошибку:

{"code":"rest_cannot_delete","message":"К сожалению, вам не разрешено удалять это сообщение.","data":{"status":401}}

Я пробовал новые ключи API с чтением/записью, но они не работают. Я использую учетную запись администратора в своем поддомене (промежуточном сайте), но не могу найти причину ограничения на удаление изображений.

Я уже несколько дней в тупике с этой проблемой. Может кто-нибудь мне помочь?

Это мой код:

function delete_product_image($product_id) {
    $woocommerce_url = 'https://staging.website.com';
    $consumer_key = '*consumer_key*';
    $consumer_secret = '*consumer_secret*';

    $get_product_url = $woocommerce_url . '/wp-json/wc/v3/products/' . $product_id;
    error_log("URL: " . print_r($get_product_url, true));
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $get_product_url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Authorization: Basic ' . base64_encode($consumer_key . ':' . $consumer_secret)
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $product_response = curl_exec($ch);
    curl_close($ch);

    $product = json_decode($product_response, true);
    if (isset($product['images']) && !empty($product['images'])) {

        $image_ids = array_column($product['images'], 'id');

        foreach ($image_ids as $image_id) {
            $delete_image_url = $woocommerce_url . '/wp-json/wp/v2/media/' . $image_id . '?force=true';

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $delete_image_url);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json',
                'Accept: application/json',
                'Authorization: Basic ' . base64_encode($consumer_key . ':' . $consumer_secret)
            ));
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            $delete_response = curl_exec($ch);
            $delete_http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);

            if ($delete_http_status == 200) {
                error_log("Deleted Image with ID: $image_id");
            } else {
                error_log("Failed to delete image with ID: $image_id. Response: " . print_r($delete_response, true));
                return false;
            }
        }
        return true; 
    } else {
        error_log("Product not found or no images to delete.");
        return false;
    }
}

Вы настроили плагин «Аутентификация WordPress REST API»? Я использую плагин от miniOrange, устанавливаю его и настраиваю REST API.

shirshak007 25.06.2024 10:22

@shirshak007 @shirshak007 Я только что попробовал - проблема все еще та же. Я почти уверен, что ключи API верны. Я даже сделал для него новый.

Gabiru 26.06.2024 01:37
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто обновление по этому поводу, так как я смог решить свою проблему после нескольких дней экспериментирования с различными решениями - если ваши ключи API не работают должным образом, например (ключ API доступа администратора, но по-прежнему отображается неавторизованным REST), вместо этого используйте пароли приложений, поскольку они работают. то же, что и авторизация ключа API.

Вы можете использовать эту ссылку: Интеграция паролей приложений

Если вы больше любите YouTube: Видео на YouTube для интеграции пароля приложения.

Руководства должно быть достаточно, чтобы разобраться в коде. Если нет, не стесняйтесь спрашивать здесь.

Другие вопросы по теме