Joh*_*rra 4 php wordpress hook action woocommerce
我一直在寻找几个小时...
我无法弄清楚在现有订单中编辑产品数量后单击“保存”时如何执行功能。
我试过这个:
add_action('woocommerce_order_edit_product', 'your_function_name');
function your_function_name(){
//my php function code would be here
}
Run Code Online (Sandbox Code Playgroud)
但是单击保存时不会调用 your_function_name 函数。
我测试了该函数,当直接调用它时,它可以正常工作,所以我想我弄错了钩子......
在与这个问题搏斗了 2 天之后,我发现了它:有两个钩子,一个保存前,一个保存后:
在后端保存订单时,两者都会被触发。一个在保存之前,一个在保存之后。
两个钩子都带有相同的变量: $order_id (int) & $items (array)
我想使用第一个钩子,您可以获得旧订单并将其内容与 items 数组进行比较以查看发生了什么变化。至少这是我现在试图完成的。
所以这就是你触发它的方式:
add_action( 'woocommerce_before_save_order_items', 'so42270384_woocommerce_before_save_order_items', 10, 2 );
function so42270384_woocommerce_before_save_order_items( $order_id, $items ) {
echo $order_id;
var_dump( $items );
}
Run Code Online (Sandbox Code Playgroud)
将产品添加到现有订单确实实现了在此之前调用的另一个钩子(因此当点击 SAVE 时,上述函数将触发,但订单及其项目在保存之前已经设置(添加产品时,订单将立即保存),这意味着$order = new WC_Order( $order_id );之前和之后都会有新项目,因此无法找到发生了什么变化。)但是woocommerce_ajax_add_order_item_meta钩子是在“添加产品”上触发的,并在这方面帮助了我。祝大家编码愉快..