首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从“woocommerce_email_customer_details”挂接中删除“email_addresses”操作

从“woocommerce_email_customer_details”挂接中删除“email_addresses”操作
EN

Stack Overflow用户
提问于 2016-09-16 11:52:35
回答 1查看 2.2K关注 0票数 0

在WooCommerce中,有一个在/woocommerce/includes/class-wc-emails.php中定义的公共静态类WC_Emails

在该类中,有一个名为woocommerce_email_customer_details的钩子的引用。为这个钩子分配了一个名为email_addresses的操作,它只是一个PHP文件,它生成一些用于账单和运输地址的超文本标记语言,并将其添加到电子邮件通知中。

代码语言:javascript
复制
add_action( 'woocommerce_email_customer_details', array( $this, 'email_addresses' ), 20, 3 );

我正在尝试删除该操作,但似乎不知道该如何操作。

下面是我的子主题的functions.php中的一个示例代码,它不起作用:

代码语言:javascript
复制
add_action( 'init', 'remove_default_addresses');
    function remove_default_addresses() {
    remove_action( 'woocommerce_email_customer_details', 
                   array( 'WC_Emails', 'email_addresses' ), 20);
}

我尝试的是wp-head,而不是init钩子。因为WC_Emails是一个静态函数,所以上面的代码是WordPress Codex建议的方式,只要使用上面的array(),而不仅仅是动作名称。无论如何,这也不起作用(仅使用操作名称):

代码语言:javascript
复制
add_action( 'init', 'remove_default_addresses');
function remove_default_addresses() {
    remove_action( 'woocommerce_email_customer_details', 'email_addresses', 20);
}

20add_action Woo上的优先级,我也理解remove_action()必须具有与原始add_action()相同的优先级。

无论我尝试什么,帐单和送货地址仍然显示在电子邮件通知上。

一旦它开始工作了,那就太棒了!但是,还有一个额外的要求:这只需要在我为Woo中的woocommerce_order_status_pending_to_processing_notification钩子编写的代码中进行。

换句话说,我还有其他代码,当订单状态从Pending更改为Processing时,我会触发并生成一封电子邮件(我也尝试了上面的代码及其在该钩子中的所有变体)。我需要的帐单和发货地址不只显示在自定义电子邮件中生成。

有什么想法吗?非常感谢。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 18:09:08

代码如下:

代码语言:javascript
复制
add_action( 'woocommerce_email', function ( $email_class ) {
    remove_action( 'woocommerce_email_customer_details', array( $email_class, 'email_addresses' ), 20, 3 );
});

Source

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39523497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档