Получатель уведомления по электронной почте Woocommerce условно на основе настраиваемого поля

У меня есть форма оформления заказа с настраиваемым полем.

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

Ниже приведен код, который я смог собрать вместе с помощью поиска в Google, но, похоже, он не работает.

function sv_conditional_email_recipient( $recipient, $order ) {

    $custom_field = get_post_meta($orderid, 'custom_field', true);

    if ($custom_field == "Value 1") 
    {
        $recipient .= ', [email protected]';
    } 
    elseif ($custom_field == "Value 2") 
    {
        $recipient .= ', [email protected]';
    }
    elseif ($custom_field == "Value 3") 
    {
        $recipient .= ', [email protected]';
    }
    return $recipient;
}

add_filter( 'woocommerce_email_recipient_new_order', 'sv_conditional_email_recipient', 10, 2 );

Любая помощь приветствуется.

Спасибо.


person phung80219    schedule 16.07.2017    source источник


Ответы (1)


Ваша проблема исходит из $orderid, который не определен. Попробуйте это вместо этого:

add_filter( 'woocommerce_email_recipient_new_order', 'new_order_conditional_email_recipient', 10, 2 );
function new_order_conditional_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) return $recipient; // (Optional)

    // Get the order ID (retro compatible)
    $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;

    // Get the custom field value (with the right $order_id)
    $custom_field = get_post_meta( $order_id, 'custom_field', true );

    if ($custom_field == "Value 1") 
        $recipient .= ', [email protected]'; 
    elseif ($custom_field == "Value 2") 
        $recipient .= ', [email protected]';
    elseif ($custom_field == "Value 3") 
        $recipient .= ', [email protected]';

    return $recipient;
}

Код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Код протестирован и работает на WooCommerce 2.6.x и 3+.

Этот хук нацелен только на уведомление по электронной почте "new_order"


person LoicTheAztec    schedule 16.07.2017