【问题标题】:Woocommerce / Remove "Payment Instructions" from Completed Orders ONLYWoocommerce / 仅从已完成的订单中删除“付款说明”
【发布时间】: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


    【解决方案1】:

    试试这个货到付款:

    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 ) );
            }
        }
    }
    add_action( 'woocommerce_email_before_order_table', 'remove_instr_email_before_order_table_callback', 9, 4 );
    function remove_instr_email_before_order_table_callback( $order, $sent_to_admin, $plain_text, $email ){
        $payment_method = $order->get_payment_method();
        if ( 'customer_completed_order' === $email->id && 'cod' === $payment_method ) {
            if( function_exists( 'wc_gateway_remove_hook' ) ) {
                wc_gateway_remove_hook( 'WC_Gateway_COD', 'woocommerce_email_before_order_table', 'email_instructions' );
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-12
      • 2016-06-11
      • 2017-05-05
      • 1970-01-01
      • 2020-03-15
      • 2019-05-18
      • 2017-10-18
      • 2018-06-26
      • 1970-01-01
      相关资源
      最近更新 更多