[WooCommerce] 綠界超商取貨付款資訊寫入訂單信件的方法

本篇文章更新時間:2021/02/19
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~


昨天收到如標題的需求。使用綠界物流外掛 ECPay Logistics for WooCommerce 的客戶因為訂單信件裡只有顯示金物流方法,而沒有把超取的超商資訊寫出來不夠詳細,希望可以補上。

使用 [WooCommerce] 搭配修改信件、預覽發信的工具 – Preview E-mails for WooCommerce 這篇的外掛來搭配開發預覽,寫出來測試很完美,但客戶測試居然有問題,欄位有出來,但沒值!

實測一次才發現,原來綠界物流外掛 2.0.2009280 版本,已經改成訂單先建立,然後才跳轉畫面去選擇超商,最後才更新回該訂單補上超商資訊。

所以這樣如果要「建立訂單當下取得超商資訊」就有流程時機點不同的問題。預設建立好訂單是「保留」狀態,除非主動觸發到下一個「處理中」狀態,不然超商資訊就無法帶入信件發出。

<?php
function mxp_ecpay_shipping_info_mail($order, $sent_to_admin, $plain_text, $email) {
    $order_id = 0;
    if (WC()->version < '3') {
        $order_id = $order->id;
    } else {
        $order_id = $order->get_id();
    }

    $ecpay_shipping = get_post_meta($order_id, 'ecPay_shipping', true);

    if (!empty($ecpay_shipping) && $order_id != 0) {
        $cs       = "";
        $ecpay_cs = current(explode('_', $ecpay_shipping));
        switch ($ecpay_cs) {
        case 'UNIMART':
            $cs = "7-11 統一";
            break;
        case 'FAMI':
            $cs = "全家";
            break;
        case 'HILIFE':
            $cs = "萊爾富";
            break;
        default:
            break;
        }

        $CVSStoreID       = get_post_meta($order_id, '_shipping_CVSStoreID', true);
        $purchaserAddress = get_post_meta($order_id, '_shipping_purchaserAddress', true);
        $purchaserStore   = get_post_meta($order_id, '_shipping_purchaserStore', true);
        if ($purchaserStore == "" || $purchaserAddress == "" || $CVSStoreID == "") {
            $purchaserStore = $purchaserAddress = $CVSStoreID = "處理中,請稍候!";
        }
        echo '<p id="ecpay_shipping_info"><span>' . $cs . ' 超商取貨資訊</span></p>';

        echo '<ul class="">
        <li>超商店名:
                <strong>' . $purchaserStore . '</strong>
        </li>
        <li>門市地址:
                <strong>' . $purchaserAddress . '</strong>
        </li>
        <li>門市代號:
                <strong>' . $CVSStoreID . '</strong>
        </li></ul>';
    }
}
add_action('woocommerce_email_order_meta', 'mxp_ecpay_shipping_info_mail', 10, 4);

補一個是否有 meta 值的判斷,沒有就先填「處理中,請稍候!」等訂單管理人員切換到下一個訂單狀態才會補上。

目前看來只能這樣,或是回補訂單超商 meta 資料時也更新訂單備註,用備註的通知信來提示購買人。總之就是要繞路了~

其他更新 WooCommerce Email 欄位的方法還有這篇參考:


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[//////////____30%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *