wordpress Woocommerce HPOS $order->保存()方法触发woocommerce_update_order更新,因此不可能更新钩子中其他 meta

4zcjmb1e  于 2023-06-21  发布在  WordPress
关注(0)|答案(1)|浏览(122)

我发现了一些关键问题,但找不到解决方法,也许有人已经找到了。例如,我想更新一些其他的订单 meta例如。'order_last_action'

add_action('woocommerce_update_order', 'order_last_action_callback', 10, 2);
function order_last_action_callback($order_id, $order) {
    $order->update_meta_data( 'order_last_action', date('d-m-y h:i:s') );
    $order->save();
}

这就进入了一个无限循环。或者如果我使用save_post_shop_order钩子,它也会进入无限循环。update_post_meta不确定可以在回调里面用HPOS下单表。在这种情况下,我如何才能成功地走出去,有什么建议吗?

unftdfkk

unftdfkk1#

您可以在更新之前取消挂钩操作,以防止循环

add_action('woocommerce_update_order', 'order_last_action_callback', 10, 2);
function order_last_action_callback($order_id, $order) {
    remove_action('woocommerce_update_order', 'order_last_action_callback', 10);
    $order->update_meta_data( 'order_last_action', date('d-m-y h:i:s') );
    $order->save();
    add_action('woocommerce_update_order', 'order_last_action_callback', 10, 2);
}

相关问题