代码之家  ›  专栏  ›  技术社区  ›  Yaniv Wainer

针对WooCommerce客户处理和完成的订单电子邮件通知

  •  1
  • Yaniv Wainer  · 技术社区  · 8 年前

    我正在尝试在Woocommerce上的订单表之后添加自定义内容 “正在处理订单”和“订单已完成”客户电子邮件,使用以下代码。

    只有当客户选择“本地提货”作为运输方式时,才应添加此选项。

    function local_pickup_extra_content_email($order, $is_admin_email) {
        if ( $is_admin_email ) {
            return;
        }
    
        if ( ICL_LANGUAGE_CODE == "he" && strpos( $order->get_shipping_method(), 'Local Pickup' ) !== false) {
            echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>';
        }
    }
    
    add_action( 'woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 2  );
    

    未将内容添加到指定的电子邮件中。它只会添加到通过Woocommerce订单管理页面手动发送的“订单详细信息/发票”电子邮件中。

    如何将上述内容添加到提到的电子邮件中?我做错了什么?
    (主题文件夹中不会覆盖电子邮件模板)

    2 回复  |  直到 8 年前
        1
  •  3
  •   LoicTheAztec    8 年前

    这可以通过missing hook参数轻松地针对这些电子邮件通知完成 $email ,这样:

    add_action( 'woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 4  );
    function local_pickup_extra_content_email( $order, $sent_to_admin, $plain_text, $email ) {
        // Only for "Processing Order" and "Order Completed" customer emails
        if( ! ( 'customer_processing_order' == $email->id || 'customer_completed_order' == $email->id ) ) return;
    
        $lang = get_post_meta( $order->id, 'wpml_language', true );
        if ( $lang == 'he' && && strpos( $order->get_shipping_method(), 'Local Pickup' ) !== false) {
            echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>';
        }
    }
    

    此代码将起作用。活动子主题(或主题)的php文件或任何插件文件。

    测试和工作


    类似答案: Add a custom text to specific email notification for local pickup Woocommerce orders

        2
  •  1
  •   Yaniv Wainer    8 年前

    这不起作用,因为我在if语句中遇到了WPML条件:

    ICL_LANGUAGE_CODE == "he" 
    

    我认为Woocommerce发送电子邮件时不存在ICL\U语言代码。为了解决这个问题,我将上述问题中的if语句替换为以下语句,它起到了很好的作用:

    $lang = get_post_meta( $order->id, 'wpml_language', true );
    if ( $lang == 'he' && && strpos( $order->get_shipping_method(), 'Local Pickup' ) !== false) {
        echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>';
    }