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

WooCommerce钩子触发电子邮件类中的退款中的电子邮件

红甫
2023-03-14

默认情况下,WooCommerce不会发送退款邮件,因为正如Mike Jolley所说,退款是“一个手工过程”。但是,我需要送一个!

我的问题是:我找不到一个钩子,它会在我的扩展电子邮件类内部触发来做到这一点。

我遵循了本教程,编写了一个类来扩展wc_email,并且使所有的东西都正常工作,只是当订单状态被更改并保存为“已退款”时,我需要一个钩子来触发类:

http://www.skyverge.com/blog/how-to-add-a-custom-woocommerce-email/

我尝试了各种挂钩,如woocommerce_order_status_refrend来代替第39-40行的woocommerce_order_status_pending_to_processing_notification挂钩。

问题是woocommerce_order_status_refrence不会在email类内部触发。它在其他地方很好用,但在这种情况下就不行了。

我尝试用woocommerce_order_actions_end作为一种“泛型”替换钩子。我添加了一个if(!$order->status=='refareded')来仅筛选“refareded”。但现在,每次加载状态为“Refleded”的订单时,钩子就会触发。

(我也试着用woocommerce_order_actions添加一个自定义操作到actions菜单中,但问题是我不知道如何用它触发我的类。它似乎在类之前加载,所以这也不起作用。)

有没有办法触发电子邮件发送通过扩展类只有当订单状态更改为‘退款’?

共有1个答案

蒋泰
2023-03-14

参考这个问题,有两件事你必须做得到退款状态触发电子邮件。

首先,您必须将woocommerce_order_status_refareded钩子注册为一个将触发电子邮件的钩子。默认情况下,它不会。

/**
 * Register the "woocommerce_order_status_refunded" hook which is necessary to
 * allow automatic email notifications when the order is changed to refunded.
 * 
 * @modified from https://stackoverflow.com/a/26413223/2078474 to remove anonymous function
 */
add_action( 'woocommerce_init', 'so_25353766_register_email' );
function so_25353766_register_email(){
    add_action( 'woocommerce_order_status_refunded', array( WC(), 'send_transactional_email' ), 10, 10 );
}

为WooCommerce 2.3编辑

在我的拉请求中合并之后,WooCommerce的下一个版本(2.3)应该支持过滤触发电子邮件的动作。因此您将通过筛选器添加退款状态:

add_filter( 'woocommerce_init', 'so_26483961_filter_email_actions' );
function so_26483961_filter_email_actions( $emails ){
    $emails[] = 'woocommerce_order_status_refunded';
    return $emails;
}

然后在自定义email类的_construct方法中,可以将其用作触发器:

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

  • 问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送

  • 我正在使用spring Boot从java发送HTML电子邮件。电子邮件包括签名与我们公司的形象标志。它工作得很好。在Gmail上。但在MacOS应用程序电子邮件中,徽标是作为附件发送的,而不是内联的。 代码的非相关部分替换为...

  • 给出以下代码片段: 当我在Eclipse中执行这段代码时,我收到一封电子邮件,如: 这就是我想要的! 但后来,我尝试在部署在Jboss-4.0.5中的应用程序中使用这个主应用程序,我收到了这样一封电子邮件: 因此,不仅消息不是html消息,而且电子邮件的主题也丢失了,而且似乎没有使用收件人发送电子邮件,而是使用密件抄送<我不知道这种行为的原因是什么,有没有人可以帮助我,或者只是给我一些提示。 更新

  • 查看以下,详细了解如何处理与 iPhone 手机配对的 M600 上的电子邮件。 阅读您的 M600 上的电子邮件 如果您在手机上使用电子邮件通知,那么在您收到新邮件时会在您的 M600 看到通知。 阅读电子邮件 轻触通知。 利用您的 M600 回复电子邮件 您可以利用您的手腕表回复邮件。 回复电子邮件 轻触通知查看所有邮件 从屏幕底部向上滑动,查看您可以执行的操作。 轻触 Reply(回复),并

  • Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。 我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港的朋友发一封信,怎么做呢? 首先你得写好信,装进信封,写上地址,贴上邮票,然后就近找个邮局,把信仍进去。 信件会从就近的小