WooCommerce PDF 發票和出貨單再加料:商品規格、小圖、付款方式、撿貨提醒

WooCommerce PDF 發票和出貨單再加料:商品規格、小圖、付款方式、撿貨提醒

最後更新:2026/10/15

〈WooCommerce PDF 發票、出貨單中文變方塊〉那篇把「PDF Invoices & Packing Slips for WooCommerce」的中文字型處理好之後,很多店家開始每天用它印出貨單,然後發現它少了幾樣東西:出貨單上只有商品名稱和數量,同一款商品有三種顏色、四種尺寸,撿貨的人還是要回後台查;客人在結帳頁寫的「請放管理室」沒有印出來;想在出貨單下面加一句給撿貨同事的提醒,設定頁找不到地方。

這個外掛的範本留了很多「掛鉤」,我們可以在固定的位置插東西進去,不用改範本檔。這篇用四段程式碼補齊:每件商品下面列出規格屬性和重量、出貨單的商品旁邊放小圖、文件最後補上付款方式、出貨方式和客人備註、出貨單加一行撿貨提醒(發票不加)。

不想自己改?把這篇交給 AI

把這篇的網址(或全文)連同下面這段話貼給 AI:

我的網站是 WordPress,有裝 WooCommerce 和 PDF Invoices & Packing Slips for WooCommerce。我想照下面這篇文章,在 PDF 發票和出貨單上加商品規格、商品小圖、付款方式、客人備註和撿貨提醒。
請先問我:我要加哪幾項、發票和出貨單要不要一樣、提醒文字要寫什麼。
問清楚之後,再一步一步告訴我:要用哪一段程式碼、貼在哪裡、哪些地方要換成我自己的資料,以及改完怎麼測試。
如果文章的做法不適合我的網站,請直接告訴我原因和替代做法。
文章:(貼上這篇的網址,或整篇內容)

改之前先備份,密碼不要貼給 AI。

先看外掛本來就能開的

寫程式之前,先到「WooCommerce > PDF 發票」的「文件」分頁看一下,發票和出貨單各有自己的設定頁,裡面已經有幾個開關可以直接用:顯示商品貨號(SKU)、顯示訂單日期、顯示付款方式、顯示客人備註這些,新版都有。能用開關解決的就先開,程式碼留給開關沒有的部分。各版本的開關不太一樣,以你裝的版本為準。

完整程式碼

// 第 79 篇:PDF 發票、出貨單再加料(PDF Invoices & Packing Slips 外掛)

// 1. 每個商品下面列出規格屬性(顏色、尺寸)和商品備註
add_action('wpo_wcpdf_after_item_meta', function ($type, $item, $order) {
    $product = $item['product'] ?? null;
    if (!$product instanceof WC_Product) {
        return;
    }
    $lines = [];
    foreach ($product->get_attributes() as $attr) {
        if ($attr instanceof WC_Product_Attribute && $attr->get_visible()) {
            $values  = $attr->is_taxonomy() ? wp_list_pluck($attr->get_terms() ?: [], 'name') : $attr->get_options();
            $lines[] = wc_attribute_label($attr->get_name()) . ':' . implode('、', $values);
        }
    }
    if ($product->get_weight()) {
        $lines[] = '重量:' . wc_format_weight($product->get_weight());
    }
    if ($lines) {
        echo '<div class="mimi-attrs" style="font-size:0.9em;color:#555">' . esc_html(implode(' ', $lines)) . '</div>';
    }
}, 10, 3);

// 2. 出貨單的商品旁邊放小圖,撿貨不會拿錯
add_action('wpo_wcpdf_before_item_meta', function ($type, $item, $order) {
    $product = $item['product'] ?? null;
    if ($type !== 'packing-slip' || !$product instanceof WC_Product || !$product->get_image_id()) {
        return;
    }
    $path = get_attached_file($product->get_image_id());
    if ($path && file_exists($path)) {
        echo '<img src="' . esc_attr($path) . '" style="width:48px;height:48px;object-fit:cover;float:left;margin-right:8px">';
    }
}, 10, 3);

// 3. 文件最下面加:付款方式、出貨方式、客人在結帳填的備註
add_action('wpo_wcpdf_after_order_details', function ($type, $order) {
    $rows = ['付款方式' => $order->get_payment_method_title(), '出貨方式' => $order->get_shipping_method()];
    if ($order->get_customer_note()) {
        $rows['客人備註'] = $order->get_customer_note();
    }
    echo '<table style="margin-top:12px;font-size:0.95em">';
    foreach ($rows as $k => $v) {
        if ($v) {
            echo '<tr><th style="text-align:left;padding-right:12px">' . esc_html($k) . '</th><td>' . esc_html($v) . '</td></tr>';
        }
    }
    echo '</table>';
}, 10, 2);

// 4. 出貨單最後加一行給撿貨人員的提醒,發票不加
add_action('wpo_wcpdf_after_customer_notes', function ($type, $order) {
    if ($type === 'packing-slip') {
        echo '<p style="margin-top:16px;border-top:1px dashed #999;padding-top:8px">撿貨完成請在每一列打勾;易碎商品請加防撞材。</p>';
    }
}, 10, 2);

程式碼放在 Code Snippets 這類外掛或子主題,放法和備份方式見〈WooCommerce 結帳頁改成台灣習慣〉。

四段各做了什麼

這個外掛產生 PDF 的方式是先組一份 HTML,再轉成 PDF,範本裡每個區塊前後都留了掛鉤,名稱像 wpo_wcpdf_after_item_meta(每個商品的資料後面)、wpo_wcpdf_after_order_details(訂單表格後面)、wpo_wcpdf_after_customer_notes(客人備註後面)。每個掛鉤都會告訴你現在印的是發票還是出貨單(invoice 或 packing-slip),所以可以只在其中一種文件上加東西。

第 1 段掛在每個商品的資料後面,把商品設定裡勾了「在商品頁顯示」的屬性印出來,像「顏色:薰衣草」,有填重量也印一行「重量:0.8 kg」。有規格的商品(例如 M 號、紅色),訂單項目本來就會印規格,這段補的是「屬性」,也就是沒有做成規格、但在商品頁看得到的那些。

第 2 段只在出貨單上做:商品名稱左邊放一張 48 像素的小圖。圖片用的是伺服器上的檔案路徑,不是網址,這樣轉 PDF 的時候不用再連回網站抓圖,比較快也比較不會失敗。撿貨的人看圖比看名稱快,尤其是名稱很像的商品。

第 3 段在訂單表格下面補一個小表格:付款方式、出貨方式、客人備註。沒有值的列會自動跳過。貨到付款的訂單,出貨的人看到「付款方式:貨到付款」就知道要請物流代收;客人的備註印在這裡,「請放管理室」才不會被漏掉。

第 4 段在客人備註後面加一行提醒,只印在出貨單。文字你可以換成自己的作業規則,例如「出貨前拍照」「冷凍商品最後裝」。

測試結果

我們在本機測試站建了一張有客人備註的訂單,商品設了「顏色:薰衣草」屬性和 0.8 公斤的重量,付款方式銀行轉帳、宅配出貨,然後實際產生 PDF、把文字讀出來檢查:

  • 發票:商品下面有「顏色:薰衣草 重量:0.8 kg」,最後有「付款方式 銀行轉帳」「出貨方式 宅配」「客人備註 請在週末送達,謝謝」,沒有撿貨提醒,也沒有商品圖。
  • 出貨單:多了商品小圖、商品屬性,最後一行是「撿貨完成請在每一列打勾;易碎商品請加防撞材」。
  • 加了程式碼前後的發票檔案大小幾乎一樣,多的只是幾行文字。

範本還想改更多

這四段都是「在固定位置加東西」。想改版面、換 Logo 位置、調整欄寬,就要用外掛的「自訂範本」功能:把外掛的 templates/Simple 資料夾複製到子主題的 woocommerce/pdf/你的範本名稱/,在設定頁選它,之後改子主題裡的那份就好,外掛更新不會蓋掉。範本是一般的 HTML 和 CSS,改起來跟改網頁差不多,只是轉 PDF 的引擎支援的 CSS 比瀏覽器少,複雜的排版要多試幾次。

出貨單印出來,接下來就是把物流單號填回訂單讓客人知道,做法在〈WooCommerce 出貨後給客人物流單號〉。

出貨單是給倉庫看的文件,資訊要一次到位

網店出貨最怕的是寄錯,寄錯一次的運費和客服成本,比花一個下午把出貨單整理好高得多。規格、圖片、備註、付款方式都印在同一張紙上,撿貨的人不用回後台查,錯的機會自然少。

如果你的網店訂單量開始變多,想把出貨單、通知信和後台流程一起整理,可以先看〈IG 帳號不是你的資產〉想想網站要做到什麼。MIMI 專做客製化網頁設計,購物車電商網站可以依你的出貨流程客製後台文件。MIMI 提供台灣網頁設計服務,全台灣的店家都可以用電話、Email 直接和設計師討論;費用可以先看首頁的製作費用參考,歡迎聯絡 MIMI。

WooCommerce 會員資料和通知信的細節:顯示名稱用真名、主旨帶名字、少寄一封信
WooCommerce 商品分類頁上方放專屬橫幅和說明:每個分類不一樣

發佈留言

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

我的車
願望清單
最近瀏覽過的
類別