【发布时间】:2014-03-09 09:17:44
【问题描述】:
我正在尝试从 Woocommerce BACS 网关感谢页面和电子邮件中删除“我们的银行信息”和付款说明。
我知道只需删除 woocommerce_thankyou_bacs 和 woocommerce_email_before_order_table 操作即可完成。
我设法从感谢页面中删除了该消息,但它仍然出现在电子邮件中。我检查了,woocommerce_thankyou_bacs 和 woocommerce_email_before_order_table 都已从 wp_filter 全局中删除。
我依赖于我从这里复制的一个函数:http://wpquestions.com/question/showChrono/id/9204,因为由于不同的唯一 id 而导致 remove_action 无法正常工作的类似问题,并且它的工作原理是这些操作从 wp_filter 全局中消失。
我尝试了各种优先级,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 ) );
}
}
}
【问题讨论】:
标签: wordpress email hook woocommerce payment-gateway