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

本篇文章更新時間:2021/02/19
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


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

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

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

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

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 '

' . $cs . ' 超商取貨資訊

'; echo '
  • 超商店名: ' . $purchaserStore . '
  • 門市地址: ' . $purchaserAddress . '
  • 門市代號: ' . $CVSStoreID . '
'; } } add_action('woocommerce_email_order_meta', 'mxp_ecpay_shipping_info_mail', 10, 4);

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

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

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


Share:

作者: Chun

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

參與討論

  1. phyoto2000
  2. Chun
  3. sylee.twn

6 則留言

  1. 您好, 誠懇發問

    我想在order list上能夠看到門市代碼或者門市名稱, 我無論在function.php裡怎麼寫都抓不到CVSStoreID的值, 請問有什麼方法能夠完成呢?

    請大神幫幫忙orz
    萬分感謝

      1. HI~感謝回覆
        這邊指的是後端訂單列表的欄位
        Woocommerce > 訂單
        在這邊要如何才能正確抓取超商門市代號並顯示呢
        感謝指導

        1. 我前篇回覆已經都把參考方法留言給你了,是哪裡還不清楚嗎?

  2. 新版的綠界外掛 ECPAY Ecommerce for WooCommerce (整合金、物流及電子發票)已解決上述問題。

發佈留言

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


文章
Filter
Mastodon