【问题标题】:Turn off Order Status updates within Order Notes using WooCommerce使用 WooCommerce 在订单备注中关闭订单状态更新
【发布时间】:2019-06-16 15:14:35
【问题描述】:

我希望关闭每个 Woocommerce 订单默认使用的所有订单状态更新仍然可以使用我自己添加的手动注释公开或私人笔记。

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

这是订单备注目前的样子:

【问题讨论】:

  • 如果您看到class-wc-order.php status_transition() 方法,则没有停止订单状态传输消息记录的选项。并且也没有过滤器从显示中排除某些消息。所以你必须从数据库中删除这些消息,它可以是手动的或自动的。
  • @RaunakGupta 你是对的,但是我们可以使用一些技巧来做到这一点。看我的回答

标签: php wordpress woocommerce hook-woocommerce wordpress-hook


【解决方案1】:

实际上,订单备注没有任何特定于消息的挂钩。相反,您可以使用在更改订单状态后立即触发的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;
        }
    });
}

经过测试,可以正常工作

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 2017-05-24
    • 2017-07-16
    • 2022-01-20
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多