У меня есть форма заказа с настраиваемым полем.
Я хотел бы добавить дополнительного получателя в электронную почту заказа на основе значения в настраиваемом поле. Пользовательское поле в настоящее время представляет собой выпадающее меню с тремя параметрами.
Ниже приведен код, который я смог собрать вместе с некоторыми поисковыми системами, однако это, похоже, не работает.
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 );
Любая помощь приветствуется.
Благодарю.
Ваша проблема связана с $ 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+.