【问题标题】:Woocommerce complete order and add info to email programmaticallyWoocommerce 以编程方式完成订单并将信息添加到电子邮件
【发布时间】:2022-01-25 09:45:15
【问题描述】:

我正在尝试手动下订单Completed,并在电子邮件发送给客户之前将跟踪信息添加到电子邮件中。我成功为订单添加了注释,但邮件中没有注释。如何将跟踪代码添加到电子邮件中?

这是我的代码:

if(!empty(wc_get_order($ord->orderId))){
    $order = wc_get_order($ord->orderId);

    if($ord->statusId == 2){ //completed
        $order->add_order_note( 'Tracking Number:'.$ord->trackingNumber );
        $order->update_status( 'completed', $ord->trackingNumber );
    }
    else if($ord->statusId == 3){
        $order->update_status( 'cancelled' );
    }
    var_dump($order);
}

【问题讨论】:

    标签: php woocommerce


    【解决方案1】:

    您可以通过将/woocommerce/templates/ [+您想要覆盖的任何文件] 复制到您的主题/子主题文件夹来覆盖电子邮件的默认 HTML 模板。如果您从未在主题中覆盖任何 woocommerce 模板 - go here

    completed 电子邮件生成的 html 是 emails/customer-completed-order.php 文件,添加您的代码以包含跟踪号或您想要的任何文本。

    编辑:当您将订单状态从处理更改为完成时触发您的功能是以下add_action('woocommerce_order_status_completed', 'your_function_name', 10, 1);

    【讨论】:

    • 问题是我想在一个函数中做,在我上面贴的代码sn-p里面
    • 我不会质疑您在哪里获取“$ord->trackingNumber”,因为这意味着您已经涵盖了它。如果您想在将订单从处理中更改为已完成后触发函数,则使用 woocommerce_order_status_processing_to_completed 操作来触发您的函数,即 add_action('woocommerce_order_status_completed', 'your_function_name', 10, 1);
    • 是的 $ord 来自网络服务。我的函数调用 update_status 来设置状态。好的,也许我会将跟踪设置为元,然后更改电子邮件模板以读取该元
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    相关资源
    最近更新 更多