Php Woocommerce电子邮件通知收件人有条件地基于自定义字段

Php Woocommerce电子邮件通知收件人有条件地基于自定义字段,php,wordpress,woocommerce,orders,email-notifications,Php,Wordpress,Woocommerce,Orders,Email Notifications,我有一个带有自定义字段的结账表单 我想根据自定义字段中的值向订单电子邮件添加一个额外的收件人。自定义字段当前是一个下拉菜单,只有3个选项 下面是我能够通过谷歌搜索拼凑出的代码,但这似乎不起作用 function sv_conditional_email_recipient( $recipient, $order ) { $custom_field = get_post_meta($orderid, 'custom_field', true); if ($custom_fiel

我有一个带有自定义字段的结账表单

我想根据自定义字段中的值向订单电子邮件添加一个额外的收件人。自定义字段当前是一个下拉菜单,只有3个选项

下面是我能够通过谷歌搜索拼凑出的代码,但这似乎不起作用

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 ) {
    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 .= ', 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+上运行

此挂钩仅针对“新订单”电子邮件通知



您的问题来自未定义的
$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 .= ', 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+上运行

此挂钩仅针对“新订单”电子邮件通知