我刚开始使用wordpress,woocommerce和woocommerce rest API。这是我无法弄清楚的原因。
当我使用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();
}
唯一的问题是邮件被调用并一次又一次地填充数据库。
这段代码是如何吸引的?它附加了哪些动作?很多时候,当您连接的代码被您运行的代码触发时,就会发生这样的事情,即您已经联系到:
add_action('save_post', 'my_example_function');
和你的代码触发:
do_action('save_post');
在您的示例中,由于您正在复制产品,因此保存该产品将触发save_post
操作,该操作会再次调用您的代码,从而启动您的无限循环。
从WP docs:https://codex.wordpress.org/Plugin_API/Action_Reference/save_post#Avoiding_infinite_loops上阅读本节