1

我希望关闭每个 Woocommerce 订单默认使用的所有订单状态更新,仍然可以使用我自己添加的手动注释,无论是公共注释还是私人注释。

这可能是通过钩子或类似的东西吗?

这是订单说明目前的样子:

在此处输入图像描述

4

1 回答 1

0

实际上,订单注释没有任何特定于消息的钩子。相反,您可以使用woocommerce_order_status_changed在更改订单状态后触发的操作挂钩来获取订单注释的翻译值。在下一步中,您应该在与操作woocommerce_new_order_note_data挂钩的函数中使用过滤器挂钩,woocommerce_order_status_changed以便在状态更改时比较和取消设置订单注释。

最终的代码将是这样的:

add_action('woocommerce_order_status_changed', 'remove_order_status_change_notes', 10, 3);
function remove_order_status_change_notes($order_id, $status_from, $status_to)
{
    $transition_note = sprintf( __( 'Order status changed from %1$s to %2$s.', 'woocommerce' ), wc_get_order_status_name($status_from), wc_get_order_status_name($status_to) );
    add_filter('woocommerce_new_order_note_data', function ($args) use ($transition_note)
    {
        if ($args['comment_content'] ===  $transition_note) {
            return [];
        } else {
            return $args;
        }
    });
}

经过测试,它正在工作

于 2019-06-22T15:08:11.530 回答