Woocommmerce

时间:2018-02-09 08:56:35

标签: php wordpress woocommerce orders email-notifications

在Woocommerce中,我想设置在“新订单”电子邮件主题行中购买的产品,如下所示:New Order - [{product_name}] ({order_number}) - {order_date}

我理解product_name可能因为多种产品而无法使用,我仍然可以通过过滤订购产品或仅允许多种产品来实现这一点,因为没有多少订单可以通过。

修改主题代码非常新,但是非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

主题需要的“新订单”的电子邮件设置(如您的问题所示):
New Order - [{product_name}] ({order_number}) - {order_date}

在下面的代码中,我将商品名称​​(用短划线分隔)替换为{product_name},因为订单可以包含多个商品...

这个隐藏在woocommerce_email_subject_new_order中的自定义函数可以解决这个问题:

add_filter( 'woocommerce_email_subject_new_order', 'customizing_new_order_subject', 10, 2 );
function customizing_new_order_subject( $formated_subject, $order ){
    // Get an instance of the WC_Email_New_Order object
    $email = WC()->mailer->get_emails()['WC_Email_New_Order'];
    // Get unformatted subject from settings
    $subject = $email->get_option( 'subject', $email->get_default_subject() );

    // Loop through order line items
    $product_names = array();
    foreach( $order->get_items() as $item )
        $product_names[] = $item->get_name(); // Set product names in an array

    // Set product names in a string with separators (when more than one item)
    $product_names = implode( ' - ', $product_names );

    // Replace "{product_name}" by the product name
    $subject = str_replace( '{product_name}', $product_names, $subject );

    // format and return the custom formatted subject
    return $email->format_string( $subject );
}

代码进入活动子主题(或活动主题)的function.php文件。

经过测试和工作。

你会得到这样的东西:

enter image description here