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

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

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

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

function sv_conditional_email_recipient( $recipient, $order ) { $custom_field = get_post_meta($orderid, 'custom_field', true); if ($custom_field == "Value 1") { $recipient .= ', email1@gmail.com'; } elseif ($custom_field == "Value 2") { $recipient .= ', email2@gmail.com'; } elseif ($custom_field == "Value 3") { $recipient .= ', email3@gmail.com'; } return $recipient; } add_filter( 'woocommerce_email_recipient_new_order', 'sv_conditional_email_recipient', 10, 2 ); 

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

Благодарю.

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

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

 add_filter( 'woocommerce_email_recipient_new_order', 'new_order_conditional_email_recipient', 10, 2 ); function new_order_conditional_email_recipient( $recipient, $order ) { // 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 .= ', email1@gmail.com'; elseif ($custom_field == "Value 2") $recipient .= ', email2@gmail.com'; elseif ($custom_field == "Value 3") $recipient .= ', email3@gmail.com'; return $recipient; } 

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

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