2014-02-11 57 views
1

我想从Woocommerce BACS网关谢谢您的页面和电子邮件中删除“我们的银行信息”和付款指示。删除行动'woocommerce_email_before_order_table'不起作用

我知道这应该通过删除woocommerce_thankyou_bacs和woocommerce_email_before_order_table操作来完成。

我设法从thankyou页面中删除邮件,但它仍然出现在电子邮件中。我检查了woocommerce_thankyou_bacs和woocommerce_email_before_order_table都从wp_filter全局中删除。

我依靠的是我从这里复制的一个函数:http://wpquestions.com/question/showChrono/id/9204,由于具有类似的remove_action问题,因为不同的唯一ID而无法工作,并且它的工作方式使得这些操作从wp_filter global中消失。

我已经尝试了各种优先级,0-20,谢谢你的页面消息已经消失,但电子邮件仍然显示付款说明。

我的代码如下:

add_action('woocommerce_thankyou_bacs', function() { 
    if(function_exists('wc_gateway_remove_hook')) { 
     //Remove BACS payment instructions from thankyou page <- WORKS! 
     wc_gateway_remove_hook('WC_Gateway_BACS', 'woocommerce_thankyou_bacs', 'thankyou_page'); 
     //Remove BACS payment instructions from email <- DOESN'T WORK! 
     wc_gateway_remove_hook('WC_Gateway_BACS', 'woocommerce_email_before_order_table', 'email_instructions'); 

    } 
}, 10); 

function wc_gateway_remove_hook($classname, $hook, $callback) { 
    foreach((array) $GLOBALS['woocommerce']->payment_gateways->payment_gateways as $key => $gateway_obj) { 
     if($classname === get_class($gateway_obj)) { 
      remove_action($hook, array($gateway_obj, $callback)); 
     } 
    } 
} 

回答

-2

试试这个:

add_action('woocommerce_email_before_order_table', function() { 
    if(function_exists('wc_gateway_remove_hook')) { 
     wc_gateway_remove_hook('WC_Gateway_BACS', 'woocommerce_email_before_order_table', 'email_instructions'); 
    } 
}, 10); 

function wc_gateway_remove_hook($classname, $hook, $callback) { 
    foreach((array) $GLOBALS['woocommerce']->payment_gateways->payment_gateways as $key => $gateway_obj) { 
     if($classname === get_class($gateway_obj)) { 
      remove_action($hook, array($gateway_obj, $callback)); 
     } 
    } 
}