WooCommerce 根据付款方式和运输方式添加自定义电子邮件内容

问题描述 投票:0回答:1

我正在尝试根据付款方式和运输方式的组合向 woocommerce 完成的订单电子邮件通知添加不同的内容。

到目前为止我的代码:

// completed order email instructions

function my_completed_order_email_instructions( $order, $sent_to_admin, $plain_text, $email ) {
    if (( get_post_meta($order->id, '_payment_method', true) == 'cod' ) && ( get_post_meta($order->id, '_shipping_method', true) == 'local pickup' )){
    echo "something1";
} 
    elseif (( get_post_meta($order->id, '_payment_method', true) == 'bacs' ) && ( get_post_meta($order->id, '_shipping_method', true) == 'local pickup' )){
    echo "something2";
 }
    else {
    echo "something3";
 }} 

付款部分有效(我得到了正确的“something1”到“something3”内容),但如果我添加&&运输条件,我会在每种付款方式中得到“something3”。

知道出了什么问题以及如何让它工作吗?

谢谢

php wordpress woocommerce orders email-notifications
1个回答
4
投票

代码修订(2023)

您的代码中有多个错误...请尝试以下操作:

add_action( 'woocommerce_email_order_details', 'my_completed_order_email_instructions', 10, 4 );
function my_completed_order_email_instructions( $order, $sent_to_admin, $plain_text, $email ) {
    // Only for "Customer Completed Order" email notification
    if( 'customer_completed_order' != $email->id ) return;

    // Targeting Local pickup shipping method
    if ( $order->has_shipping_method('local_pickup') ){
        if ( 'cod' == $order->get_payment_method() ){
            echo "Custom text 1";
        } elseif ( 'bacs' == $order->get_payment_method() ){
            echo "Custom text 2";
        } else {
            echo "Custom text 3";
        }
    }
}

代码位于子主题的functions.php文件中(或插件中)。

此代码经过测试,可与 WooCommerce 3+ 配合使用

© www.soinside.com 2019 - 2024. All rights reserved.