2016-09-16 74 views
0

在WooCommerce中,有一个公共静态类WC_Emails,定义见/woocommerce/includes/class-wc-emails.php从'woocommerce_email_customer_details'钩子中删除'email_addresses'动作

在该类中,有一个对称为woocommerce_email_customer_details的钩子的引用。为此,分配了一个名为email_addresses的操作,该操作仅仅是一个PHP文件,该文件生成一些用于计费和送货地址的HTML以添加到电子邮件通知中。

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); 
} 

取而代之的是init钩的存在,我已经试过wp-head。由于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佑优先呢,我也明白,一个remove_action()必须具有相同的优先级是什么原add_action()了。

无论我尝试什么,帐单和送货地址仍会出现在电子邮件通知中。

一旦获得工作,这将是伟大的!然而,还有一个额外的要求:这只需要在Woo的woocommerce_order_status_pending_to_processing_notification钩子的代码中出现。

换言之,我有火灾,并产生当来自待到处理订单状态改变(和我曾尝试我上面的代码与它的该钩内的所有变化也一样)的电子邮件的其他代码。我需要帐单和送货地址才不会显示在生成的自定义电子邮件中。

任何想法?非常感谢。 :)

+0

请,你就可以开始你的问题告诉你想要的首次明确(可能是一个明确的截屏),因为我不真正理解你真正想要什么,以及你想要做什么。对不起......谢谢 – LoicTheAztec

+0

谢谢@LoicTheAztec。基本上,它将从电子邮件通知中删除运费和帐单地址。我想,不需要截图。 :) –

回答

0

下面是代码:

add_action('woocommerce_email', function ($email_class) { 
    remove_action('woocommerce_email_customer_details', array($email_class, 'email_addresses'), 20, 3); 
}); 

Source

+2

添加一些解释与答案这个答案如何帮助OP在解决当前问题 –