在WooCommerce中,有一个在/woocommerce/includes/class-wc-emails.php中定义的公共静态类WC_Emails。
在该类中,有一个名为woocommerce_email_customer_details的钩子的引用。为这个钩子分配了一个名为email_addresses的操作,它只是一个PHP文件,它生成一些用于账单和运输地址的超文本标记语言,并将其添加到电子邮件通知中。
add_action( 'woocommerce_email_customer_details', array( $this, 'email_addresses' ), 20, 3 );我正在尝试删除该操作,但似乎不知道该如何操作。
下面是我的子主题的functions.php中的一个示例代码,它不起作用:
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(),而不仅仅是动作名称。无论如何,这也不起作用(仅使用操作名称):
add_action( 'init', 'remove_default_addresses');
function remove_default_addresses() {
remove_action( 'woocommerce_email_customer_details', 'email_addresses', 20);
}20是add_action Woo上的优先级,我也理解remove_action()必须具有与原始add_action()相同的优先级。
无论我尝试什么,帐单和送货地址仍然显示在电子邮件通知上。
一旦它开始工作了,那就太棒了!但是,还有一个额外的要求:这只需要在我为Woo中的woocommerce_order_status_pending_to_processing_notification钩子编写的代码中进行。
换句话说,我还有其他代码,当订单状态从Pending更改为Processing时,我会触发并生成一封电子邮件(我也尝试了上面的代码及其在该钩子中的所有变体)。我需要的帐单和发货地址不只显示在自定义电子邮件中生成。
有什么想法吗?非常感谢。:)
发布于 2016-11-18 18:09:08
代码如下:
add_action( 'woocommerce_email', function ( $email_class ) {
remove_action( 'woocommerce_email_customer_details', array( $email_class, 'email_addresses' ), 20, 3 );
});https://stackoverflow.com/questions/39523497
复制相似问题