WooCommerce_UPDATE_PRODUCT操作-每次产品更新仅触发一次 [英] woocommerce_update_product action – fire only once for every product update
本文介绍了WooCommerce_UPDATE_PRODUCT操作-每次产品更新仅触发一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有哪些解决方法可以使WooCommerce_UPDATE_PRODUCT操作仅触发一次?
我读到它会触发两次,因为它需要在内部保存一次以检索图像/变体保存的ID。
但从开发人员的经验来看,我想这确实不是大多数人需要的。
到目前为止,我找到的唯一解决方法是添加操作并将其直接从挂钩中删除:
add_action('woocommerce_update_product', 'my_product_update', 10, 2);
function my_product_update($product_id, $product){
remove_action('woocommerce_update_product');
// We'll get here only once!
}
但是,这在尝试进行批量编辑时会中断,从而使挂钩只对第一个产品起作用(因为之后它会被删除!)。
有什么其他方法可以解决此问题?
谢谢!
推荐答案
使用WordPress Transient可能会有所帮助。
add_action('woocommerce_update_product', 'my_product_update', 10, 2);
function my_product_update($product_id, $product) {
$updating_product_id = 'update_product_' . $product_id;
if ( false === ( $updating_product = get_transient( $updating_product_id ) ) ) {
// We'll get here only once! within 2 seconds for each product id;
// run your code here!
set_transient( $updating_product_id , $product_id, 2 ); // change 2 seconds if not enough
}
}
这篇关于WooCommerce_UPDATE_PRODUCT操作-每次产品更新仅触发一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文