当前位置: 首页 > 知识库问答 >
问题:

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

邹嘉荣
2023-03-14

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

不想发送自动电子邮件的原因是,我在电子邮件模板文件(override)/woocommerce/email/customer-completed-order.php中添加了一个代码,它将在发送给客户的电子邮件中显示在admin中创建的新订单注释,如果我们添加订单注释并保存它,然后将订单状态更改为completed并保存它,就会创建一个新注释并发送电子邮件。所以现在发送给客户的电子邮件中显示的注释不是我们想要在电子邮件中显示的注释。这是为了有一个良好设计的电子邮件状态更新“装运”,并包括装运的跟踪号码。将最近/最新的订单注释添加到电子邮件的代码:

<?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个答案

宋翔
2023-03-14
<?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中修复的一个bug造成的。要使上述代码正常工作(将最后一张订单通知返回给客户),请执行以下操作:删除代码行:$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

堵浩波
2023-03-14

我也遇到过类似的问题,但解决方法不同:

我们禁用了订单完成后发送的自动电子邮件(在WC>设置>电子邮件),所以当订单被标记为完成时不会发送电子邮件。

然后,我们将订单备注的电子邮件模板更改为我们想要的文本(例如:“您的订单现在已经完成,正在发送给您。请在下面找到您发货的跟踪编号”),并使用备注功能来跟踪编号。他们不直接链接到跟踪网站,但与托运代理详细提供在模板,它应该很容易为客户手动复制和粘贴跟踪。

那对你有用吗?

轩辕鸿
2023-03-14

这是为了有一个良好设计的电子邮件状态更新“装运”,并包括装运的跟踪号码。

我建议创建您自己的订单状态,并将其称为shipped。以下是如何使所有工作:WooCommerce-发送自定义电子邮件自定义订单状态更改

 类似资料:
  • 我的Wordpress安装有问题,更具体的说是WooCommerce。 我在过去几个月中一直在工作的客户希望,每次客户完成/支付订单时,除了标准的订单确认电子邮件外,还会向他的电子邮件地址发送一封自定义电子邮件。 简而言之:我需要在订单完成时给客户发送一封自定义邮件。如何在functions.php中做到这一点? 我尝试使用官方文档中描述的各种钩子和函数,但无法弄明白。 Wordpress的版本是

  • 有什么方法我可以添加内容从一个自定义产品字段到‘订单完成'WooCommerce电子邮件? 我已经将此代码添加到functions.php中,以便将自定义字段保存到产品元信息中。 上面的代码工作得很好,它显示了所有“订单完成”电子邮件的自定义文本。 但是,我想用自定义产品字段数据替换文本的URL部分。每个产品的数据都不同。 谢了。

  • 根据订购的产品,我需要发送两封不同的“新订单”电子邮件。这种情况下,产品存储在不同的位置,我需要发送一封电子邮件,其中只包含存储1中的产品,另一封邮件包含存储2中的产品。如果仅订购了位于存储1的产品,则不应发送电子邮件2,反之亦然。 存储信息是每个产品上的自定义元字段。 我添加了一个自定义电子邮件类,它是的副本,但仅在需要时更改了名称。 我一直在寻找钩子和过滤器,但我不能一路走下去。我也一直在考虑

  • 电子邮件屏幕抓取显示文本应该去哪里 我尝试将此添加到functions.php中,但它是2015年的,用于“处理”未“完成”的电子邮件: 我已经尝试过了,但这是几年前的事情,并没有完成我需要的:将产品描述添加到WooCommerce电子邮件通知中

  • 我已经做了大量的搜索,尽管我发现有用户询问如何实现以下目标,但在我的知识范围内没有工作解决方案的例子。 问题是关于非常流行的Wordpress插件“Woocommerce”。该插件附带了一个电子邮件系统,使电子商务网站所有者和客户的生活更加轻松。一个问题是,当商店经理将订单状态更改为“已退款”时,没有发送电子邮件。有人说这是因为它是一个手工过程。这是真的,这是一个过程,店主将通过那里的商户帐户或贝

  • 我在我的木业商店里遇到了一个很奇怪的问题。有几天“Customer_Processing_Order”电子邮件不再发送给客户。即使我在订单详细信息中触发手动发送此电子邮件,也没有发生任何事情。 在一般电子邮件中,发送与SMTP数据一起工作。当我将状态设置为“已完成”时,电子邮件将被发送。只有订单确认不起作用。 电子邮件被激活,我也检查了错误日志。我还安装了订单电子邮件的预览插件。当我想生成预览时,