【发布时间】:2019-10-25 11:16:18
【问题描述】:
过去 2 小时我一直在阅读有关此的帖子,尝试了不同的代码行,但没有一个完全符合我的要求。
正如标题所说,我想从我的 Woocommerce 电子邮件中删除付款说明,但仅适用于已完成的电子邮件订单,以及两种付款方式 > 货到付款和银行转账!
我已尝试在此处的帖子中找到此代码。不幸的是,它不起作用。
add_action( 'woocommerce_email_before_order_table', 'action_email_before_order_table_callback', 9, 4 );
function action_email_before_order_table_callback(
$order, $sent_to_admin, $plain_text, $email
){
$payment_method = $order->get_payment_method();
// Targeting "COD" payment method on Customer completed order email notification
if ( 'customer_completed_order' === $email->id && 'cod' === $payment_method ) {
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
remove_action( 'woocommerce_email_before_order_table', [ $available_gateways[$payment_method], 'email_instructions' ], 10 );
}
}
我也尝试过这个,它有效,但适用于所有电子邮件。
add_action( 'woocommerce_email_before_order_table', function() {
if( function_exists( 'wc_gateway_remove_hook' ) ) {
wc_gateway_remove_hook( 'WC_Gateway_COD', '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 ) || 'customer_completed_order' === $email->id && 'cod' === $payment_method ) {
remove_action( $hook, array( $gateway_obj, $callback ) );
}
}
}
我可以通过php阅读,但我不是修改它的专家。 所以欢迎任何其他代码想法!非常感谢。
【问题讨论】:
标签: php wordpress woocommerce