Несколько сообщений от WooCommerce Rest API $ woocommerce-> post ("продукты", $ data); - PullRequest
0 голосов
/ 12 января 2019

Я только начал работать с API WordPress, WooCommerce и WooCommerce Rest. Я не могу понять причину этого.

Когда я использую wordpress woocommerce rest api для публикации данных, он публикует их несколько раз и продолжает отправлять снова и снова, как бесконечный цикл.

(Get, Delete, Put работают нормально)

Код:

$product_to_be_duplicated = $woocommerce->get('products/' . $id_to_be_dulpicated);
$duplicated_product = json_decode(json_encode($product_to_be_duplicated), true);
$dup_description = "duplicate of " . $duplicated_product['description'];        
    $dup_tags = array_merge($duplicated_product['tags'], [['id' => $tag_id, 'name' => $tag_name, 'slug' => $tag_slug]]);
    array_shift($duplicated_product);
    $duplicated_product['description']= $dup_description;
    $duplicated_product['tags'] = $dup_tags;
    $duplicated_product['catalog_visibility'] =  'hidden';
    try
    {
        $woocommerce->post('products', $duplicated_product);//the problem statement
    }
    catch (HttpClientException $e) 
    {
        print_r($e->getMessage());
        exit();
    }

Единственная проблема связана с тем, как он вызывается и снова и снова заполняет базу данных.

1 Ответ

0 голосов
/ 22 февраля 2019

Как подключается этот кусок кода? К какому действию это прикреплено? Часто такие вещи случаются, когда код, к которому вы подключились, запускается кодом, который вы запускаете, т.е. вы подключились к:

add_action('save_post', 'my_example_function');

и ваш код срабатывает:

do_action('save_post');

В вашем примере, поскольку вы дублируете продукт, сохранение, которое вызовет действие save_post, которое снова вызывает ваш код, который запускает ваш бесконечный цикл.

Прочтите этот раздел из документации WP: https://codex.wordpress.org/Plugin_API/Action_Reference/save_post#Avoiding_infinite_loops

...