2014-02-11 127 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)); 
     } 
    } 
}