Удалите банковские реквизиты из нового электронного заказа в WooCommerce - PullRequest
1 голос
/ 03 апреля 2019

Может быть, вы можете помочь мне с этой проблемой. Мне нужно удалить информацию о банковском счете (BACS) из нового электронного письма о заказе, если клиент выбрал оплату кредитной картой, и оставить его, если он выбрал прямой банковский перевод. Прямо сейчас информация появляется в обоих письмах. (Оплата в кредит и прямой перевод). Я использую этот код:

// Add your own action for the bank instructions
 add_action( 'woocommerce_email_before_order_table', 
 'prefix_email_instructions', 9, 3 );
 function prefix_email_instructions( $order, $sent_to_admin, $plain_text = 
 false ) {
// Get the gateway object
$gateways           = WC_Payment_Gateways::instance();
$available_gateways = $gateways->get_available_payment_gateways();
$gateway            = isset( $available_gateways['bacs'] ) ? 
 $available_gateways['bacs'] : false;

// We won't do anything if the gateway is not available
if ( false == $gateway ) {
    return;
}

// Add only the email instructions
if ( ! $sent_to_admin && 'bacs' === $order->payment_method && $order- 
>has_status( 'on-hold' ) ) {
    if ( $gateway->instructions ) {
        echo wpautop( wptexturize( $gateway->instructions ) ) 
. PHP_EOL;
    }
}
}

// Remove the original bank details
add_action( 'init', 'prefix_remove_bank_details', 100 );
function prefix_remove_bank_details() {

// Do nothing, if WC_Payment_Gateways does not exist
if ( ! class_exists( 'WC_Payment_Gateways' ) ) {
    return;
}

// Get the gateways instance
$gateways           = WC_Payment_Gateways::instance();

// Get all available gateways, [id] => Object
$available_gateways = $gateways->get_available_payment_gateways();

if ( isset( $available_gateways['bacs'] ) ) {
    // If the gateway is available, remove the action hook
    remove_action( 'woocommerce_email_before_order_table', array( 
$available_gateways['bacs'], 'email_instructions' ), 10, 3 );
}
}

Но информация все еще там. Есть идеи как это решить?

1 Ответ

0 голосов
/ 04 апреля 2019

Этой строки кода достаточно для этого. Это будет сбрасывать данные учетной записи от почты.

add_filter('woocommerce_bacs_accounts', '__return_false');
...