我刚刚开始使用wordpress,woocommerce和woocommerce rest API。 这是我无法弄清楚的原因。
当我使用wordpress woocommerce rest api 发布数据时,它会多次发布数据,并且会不断循环发布,就像无限循环一样。
(获取,删除,放入操作正常)
代码:
$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();
}
唯一的问题是帖子被调用,并一次又一次地填充数据库。
答案 0 :(得分:0)
这段代码是如何挂钩的?它附加到哪个动作?通常,当您运行的代码触发了您所钩住的代码时,即会钩住您的代码:
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