【问题标题】:Change email subject for custom order statuses in Woocommerce 3在 Woocommerce 3 中更改自定义订单状态的电子邮件主题
【发布时间】:2018-08-02 08:35:08
【问题描述】:

我已成功更改 Woocommerce 处理订单的电子邮件主题(使用 this thread

add_filter( 'woocommerce_email_subject_customer_processing_order', 'email_subject_procs_order', 10, 2 );
function email_subject_procs_order( $formated_subject, $order ){
    return sprintf( esc_html__( 'Example of subject #%s', 'textdomain'), $order->get_id() );
} 

但我想在订单状态更改后再次发送带有新主题的处理订单电子邮件,所以我跟随this tread调整主题等。

add_action('woocommerce_order_status_order-accepted', 'backorder_status_custom_notification', 20, 2);
function backorder_status_custom_notification( $order_id, $order ) {
    // HERE below your settings
    $heading   = __('Your Awaiting delivery order','woocommerce');
    $subject = sprintf( esc_html__( 'New subject #%s', 'textdomain'), $order->get_id() );

    // Getting all WC_emails objects
    $mailer = WC()->mailer()->get_emails();

    // Customizing Heading and subject In the WC_email processing Order object
    $mailer['WC_Email_Customer_Processing_Order']->heading = $heading;
    $mailer['WC_Email_Customer_Processing_Order']->settings['heading'] = $heading;
    $mailer['WC_Email_Customer_Processing_Order']->subject = $subject;
    $mailer['WC_Email_Customer_Processing_Order']->settings['subject'] = $subject;

    // Sending the customized email
    $mailer['WC_Email_Customer_Processing_Order']->trigger( $order_id );
}

但仅接受第一封电子邮件主题更改。有没有办法让它一起工作?
if( $order->has_status( 'order-accepted' ))可以使用吗?

【问题讨论】:

    标签: php woocommerce orders email-notifications subject


    【解决方案1】:

    您需要在 IF 语句中使用您的自定义状态来避免该问题,这样:

    add_filter( 'woocommerce_email_subject_customer_processing_order', 'email_subject_procs_order', 10, 2 );
    function email_subject_procs_order( $formated_subject, $order ){
        // We exit for 'order-accepted' custom order status
        if( $order->has_status('order-accepted') ) 
            return  $formated_subject; 
    
        return sprintf( esc_html__( 'Example of subject #%s', 'textdomain'), $order->get_id() );
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。它应该可以工作。

    【讨论】:

    • 谢谢你,它正在工作。但只有当状态设置为接受订单并且我从下拉菜单(发送订单电子邮件)“处理订单”中选择时,才会收到杂乱无章的电子邮件。主题再次设置为原始主题(接受任何更改)。我还在电子邮件模板中使用了相同的条件来更改电子邮件文本(标题后的文本),在这种情况下设置为接受订单的版本。我知道接受订单和发送处理电子邮件的组合不是正确的组合,但它可能会发生。是否应该扩展为if ( $order->has_status('order-accepted') && ! $order->has_status('processing-order') )
    • 嗯,不,它不起作用,我尝试了每个语句组合 :-) 像 ||, &&,!。 非常感谢我很感激,我没有Skype,但我的PC速度很慢:-),我在FB上找到了你,如果它适合你(?).-)
    • @Gore 最好通过我的个人资料链接的联系表与我联系,我会向您发送不同的联系方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2021-01-24
    • 2018-07-20
    • 2019-01-12
    相关资源
    最近更新 更多