Дополнительный получатель электронной почты на основе идентификаторов способов оплаты в WooCommerce

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

Вот мой код:

function at_conditional_admin_email_recipient($recipient, $order){
 //   if( ! is_a($order, 'WC_Order') ) return $recipient;
   
    if ( get_post_meta($order->id, '_payment_method', true) == 'my_custom_gateway_id' ) {
        $recipient .= ', [email protected]';
    } else {
        $recipient .= ', [email protected]';
    }
    return $recipient;
    
    
};
add_filter( 'woocommerce_email_recipient_new_order', 'at_conditional_admin_email_recipient', 10, 2 );

Но похоже, что крючок не запускает мою функцию. Что может быть причиной?


person David Mbwana    schedule 03.10.2020    source источник


Ответы (1)


Ваш код устарел после Woocommerce 3, попробуйте вместо этого следующее:

add_filter( 'woocommerce_email_recipient_new_order', 'payment_id_based_new_order_email_recipient', 10, 2 );
function payment_id_based_new_order_email_recipient( $recipient, $order ){
    // Avoiding backend displayed error in Woocommerce email settings (mandatory)
    if( ! is_a($order, 'WC_Order') ) 
        return $recipient;

    // Here below set in the array the desired payment Ids
    $targeted_payment_ids = array('bacs');
   
    if ( in_array( $order->get_payment_method(), $targeted_payment_ids ) ) {
        $recipient .= ', [email protected]';
    } else {
        $recipient .= ', [email protected]';
    }
    return $recipient;
}

Код находится в файле functions.php вашей активной дочерней темы (или активной темы). Должно сработать.

Также иногда проблема может быть связана с неправильной строкой идентификатора метода оплаты в вашем коде (поэтому попробуйте сначала, например, с идентификаторами способов оплаты WooCommerce cod или bacs, чтобы увидеть, работает ли код).

person LoicTheAztec    schedule 03.10.2020