Woocommerce完成订单电子邮件 - 仅手动

时间:2016-12-30 10:51:30

标签: wordpress email woocommerce

我正在尝试取消/删除在订单发货后将订单状态保存为“已完成”时发送的自动客户电子邮件。

不希望发送自动电子邮件的原因是因为我在电子邮件模板文件中添加了一个代码(覆盖)/woocommerce/email/customer-completed-order.php,它将显示在管理员中创建的新订单备注在发送给客户的电子邮件中,如果我们添加订单并将其保存,然后将订单状态更改为已完成并保存,则会创建一个新注释并发送一封电子邮件。因此,现在发送给客户的电子邮件中显示的注释不是我们想要在电子邮件中显示的注释。 这样做的全部意图是设计精美的电子邮件,状态更新为“已发货”,并包含货件的跟踪编号。 将最后/最新订单备注添加到电子邮件的代码:

<?php
$args = array(
'status' => 'approve',
'post_id' => $order->id
);
$comments = get_comments($args);
foreach($comments as $comment) {
if ($comment === reset ($comments))
echo $comment->comment_content . '.<br />';
}

所以我现在找到了解决方案。 从此链接添加功能: https://docs.woocommerce.com/document/unhookremove-woocommerce-emails/

add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );

function unhook_those_pesky_emails( $email_class ) {

remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );
}

上述功能将禁用在保存状态为“已完成”的订单时发送的自动电子邮件,但您仍然可以使用“订单操作”手动发送订单已完成的电子邮件,并控制在发送时保存的最后一个订单备注电子邮件。 所以现在我们只需将订单状态更改为已完成并保存,然后我们向客户添加“订单备注”(非私人),其中仅包含跟踪号并保存(“添加备注”),最后我们使用“订单操作” “手动将订单已完成的电子邮件发送给客户。

如果有任何问题,请随意...

3 个答案:

答案 0 :(得分:1)

  

这样做的全部意图是设计精美的电子邮件   状态更新“已发货”并包含跟踪编号   装运。

我建议您创建自己的订单状态并将其命名为shipped。以下是如何使其全部工作:WooCommerce - send custom email on custom order status change

答案 1 :(得分:0)

我有一个类似的问题,但解决方法不同:

我们停用了订单完成后发送的自动电子邮件(在WC&gt;设置&gt;电子邮件中),因此订单标记完成时不会发送电子邮件。

然后我们将订单备注的电子邮件模板更改为我们想要的文本(例如“您的订单现已完成并且已经在您的订单上了。请在下面找到您的货件的追踪号码”)并使用备注功能对于跟踪号码。它们不直接链接到跟踪网站,但是模板中提供了详细的运输代理,客户可以轻松地手动复制和粘贴以进行跟踪。

这会对你有用吗?

答案 2 :(得分:0)

<?php
  $args = array(
   'status' => 'approve',
   'post_id' => $order->id
   );
  $comments = get_comments($args);
  foreach($comments as $comment)          
   {
     if ($comment === reset ($comments))
        echo $comment->comment_content . '.<br />';
   }

以上代码未在WooCommerce(WC)3.1.0中提供所需的输出(即客户的最后订单)

上述代码的工作原因是WC 3.1.0中修复了一个错误。要使上述代码生效(将最后的订单备注返回给客户),请执行以下操作:     删除代码行:$comments = get_comments($args);     并将其替换为:

`remove_filter( 'comments_clauses', array( 'WC_Comments','exclude_order_comments' ), 10, 1 );
 $comments = get_comments( $args );
 add_filter( 'comments_clauses', array( 'WC_Comments','exclude_order_comments' ), 10, 1 );`

有关错误的详细信息:https://github.com/woocommerce/woocommerce/issues/15982#issuecomment-313235066