【问题标题】:Configure email notification triggers on WooCommerce Advanced Notifications在 WooCommerce 高级通知上配置电子邮件通知触发器
【发布时间】:2017-09-20 20:12:52
【问题描述】:

我正在使用 WooCommerce 高级通知发送电子邮件,从 v1.2.10 开始,添加了一个过滤器,因此您可以更改触发器,但我无法让它工作。

过滤器挂钩如下所示:

    if ( apply_filters( 'woocommerce_advanced_notifications_multiple_statuses_trigger', true ) ) {
        add_action( 'woocommerce_order_status_pending_to_processing', array( $this, 'new_order' ) );
        add_action( 'woocommerce_order_status_pending_to_completed', array( $this, 'new_order' ) );
        add_action( 'woocommerce_order_status_pending_to_on-hold', array( $this, 'new_order' ) );
        add_action( 'woocommerce_order_status_failed_to_processing', array( $this, 'new_order' ) );
        add_action( 'woocommerce_order_status_failed_to_completed', array( $this, 'new_order' ) );
    } else {
        add_action( 'woocommerce_order_status_completed', array( $this, 'new_order' ) );
    }

我想要达到的目标

我希望能够添加自己的触发器(例如 processing_to_completed)并删除其他触发器(例如 pending_to_on-hold)。

我要去哪里

我使用此 (http://docs.presscustomizr.com/article/26-wordpress-actions-filters-and-hooks-a-guide-for-non-developers) 指南来了解有关过滤器的更多信息,并且我发现我可以通过将此代码添加到我的 functions.php 来更改使用 if 语句的哪一部分

apply_filters( 'woocommerce_advanced_notifications_multiple_statuses_trigger', false );

但我看不到如何添加新触发器。我看不到如何将变量传回过滤器。

我希望能指出正确的方向。谢谢,劳拉。

【问题讨论】:

  • 你的目标是什么?是否要删除多个状态触发器?还是要添加一个额外的?
  • 嗨,赫尔加。我希望能够添加我自己的触发器(例如 processing_to_completed)并删除其他触发器(例如pending_to_on-hold)。我已经编辑了问题以澄清。
  • 好吧,如果你 add_filter( 'woocommerce_advanced_notifications_multiple_statuses_trigger', '__return_false' ); 应该禁用多个状态触发器,只留下 woocommerce_order_status_completed 触发器。
  • 但是您仍然想在该操作上触发插件的new_order 方法?你能展示更多这门课吗?如何实例化类?
  • 谢谢 Helga 我会检查您的建议并提供更多详细信息。

标签: php wordpress woocommerce orders email-notifications


【解决方案1】:

我不使用 WooCommerce 高级通知 插件,因为我可以使用自定义代码自己做这种事情。所以这里是这样做的方法(非常简单):

 add_action( 'woocommerce_order_status_processing_to_completed', 'order_processing_to_completed_new_order_notification', 10, 2 );
 function order_processing_to_completed_new_order_notification( $order_id, $order ){
     $wc_email = new WC_Email_New_Order($order_id);
     $wc_email->trigger( $order_id, $order );
 }

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

所有代码都在 Woocommerce 3+ 上进行了测试并且可以运行。

【讨论】:

  • 您能否命名该函数,使其不是匿名的?
  • @helgatheviking 今天我太墨西哥了,喝了太多龙舌兰酒……(开玩笑)。我现在就做(如果它在活动主题function.php文件上真的很重要吗?)...
  • 我可以去喝点龙舌兰酒。读到墨西哥发生的事情真的令人心碎。你是对的,如果它在主题中可能没问题,但我认为它的名称更具可读性。另外,这是功能,无论如何都应该进入插件。
  • 谢谢洛伊克。您的解决方案很简洁,但不是我想要的。 Woo Adv Notification 插件允许您将不同的“供应商”分配给每个产品,并在购买该产品时通知他们,我想在此功能上进行构建。如果我想出什么,我会发布。
  • @LauraTheExplorer 我可以在我的函数中做到这一点,但我不能用你的插件,因为我没有它,我无法进行任何测试。这很有趣,因为我们三个在这里有相似的 SO 名称 :)
猜你喜欢
  • 1970-01-01
  • 2020-01-18
  • 2011-03-03
  • 2018-03-10
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多