WooCommerce PDF发票自动生成?

chinaz
chinaz 初级会员超兽战士
发布于 2026-10-08 06:43 ·1 浏览 ·0 回复

读完这篇你能得到什么:跟着做完,你的 WooCommerce 商城会在客户下单后自动生成带中文的 PDF 发票,并作为附件随订单邮件一起发给客户,后台订单页也能随时下载。

整个过程用免费插件就能完成,不需要写 PHP,唯一的坑是中文乱码,我会在第四步专门讲。

第一步:确认环境满足插件的最低要求

这一步是检查服务器环境,做完后能避免装完插件白屏或报错。

进入 WordPress 后台 → 工具 → 站点健康 → 信息 → 服务器,确认:

  • PHP 版本 ≥ 7.4(推荐 8.0 及以上)
  • WordPress ≥ 6.0
  • WooCommerce 已安装并启用(≥ 6.0)
  • PHP 的 mbstring、dom、gd 扩展已开启(站点健康页面会列出来)

注意:如果你的 PHP 还是 7.2 或更低,先在主机面板里切到 8.0,再往下做,否则插件启用后会用 dompdf 报错。

第二步:安装 WooCommerce PDF Invoices & Packing Slips

这一步装插件,做完后后台会出现发票设置菜单。

后台 → 插件 → 安装插件 → 右上角搜索框输入 WooCommerce PDF Invoices & Packing Slips → 回车。

认准作者是 WP Overnight、免费版激活量最高的那个(插件英文名后的 slug 是 woocommerce-pdf-invoices-packing-slips)。在插件卡片上点「现在安装」,按钮变成「启用」后再点一次。

注意:搜索结果里有一堆名字相似的插件。装错插件后期换模板、换发票号规则会很麻烦,一定要核对作者名。

第三步:配置发票编号和邮件自动附件

这一步是让发票真正「自动」发出的关键,做完后客户付款就会收到带 PDF 的邮件。

后台左侧菜单进入 WooCommerce → PDF Invoices,然后点上方 Settings 标签。
(如果你的版本没有这个顶级菜单,路径是 WooCommerce → 设置 → PDF Invoices。)

在 General 标签页里设置:

  1. Invoice number 区域:Prefix 填 INV-,Next invoice number 填 1,勾选 Reset yearly(每年 1 月 1 日归零)。
  2. Attach to email 区域:勾选 Invoice,并在下拉里勾上 Processing order 和 Completed order 两个状态。
  3. Template 下拉先保持 Simple,后面第四步再换。
  4. Download button 勾选「My Account」和「Order emails」,让客户在「我的账户 → 订单」里也能自己下载。

切到 Documents 标签页,确认 Invoice 状态是 Enabled。

保存后,去前台下一单测试订单(可以用货到付款、金额 1 元),把订单状态改成「处理中」。此时 WooCommerce → 订单 → 打开这笔订单,右侧订单操作区会多出一个「PDF Invoice」下拉和 Generate 按钮,点它就能下载发票。

注意:订单停留在「待付款」时不会触发附件邮件。测试时如果没收到邮件,先把订单手动改成「处理中」或「已完成」,同时确认主机能正常发信(可装 WP Mail SMTP 走第三方邮箱)。

第四步:解决中文乱码并换成自己的模板

这一步解决 dompdf 默认字体不含中文的问题,做完后公司名、商品名、地址的中文能正常显示。

插件自带的 Simple、Modern 模板用的是 DejaVu Sans 字体,只覆盖拉丁字母,中文会显示成方框或问号。

做法是复制一份模板到你的主题里:

  1. 把 wp-content/plugins/woocommerce-pdf-invoices-packing-slips/templates/Simple/ 整个文件夹复制到 wp-content/themes/你的主题/woocommerce/pdf/my-invoice/(my-invoice 名字随便起,插件认文件夹)。
  2. 下载一个中文字体(如思源黑体 NotoSansSC-Regular.ttf),上传到 wp-content/uploads/fonts/ 目录。
  3. 打开 my-invoice/style.css,在文件最顶端加上:
@font-face {
  font-family: 'NotoSansSC';
  src: url('https://你的域名/wp-content/uploads/fonts/NotoSansSC-Regular.ttf') format('truetype');
  font-weight: normal;
  font-style: normal;
}
body { font-family: 'NotoSansSC', sans-serif; }
  1. 回到 Settings → General,把 Template 改成 my-invoice,保存。

然后重新生成一次发票,中文应该正常了。改完后如果没变化,先清掉缓存插件的页面缓存,再用「无痕窗口」重新打开订单。

注意:中文全字库字体有 10MB 左右,dompdf 每次渲染都要加载它,PDF 生成会变慢。生产环境建议只保留常用字做子集,或者干脆只在标题和商品名区域用中文字体。

想改发票版式(比如加公司 Logo、税号、银行账号),直接编辑 my-invoice/simple.php。文件里是一段 HTML,变量通过 $this->get_company_name()、$order->get_order_number() 这类方法取,改前先备份。

小结

  • 环境要求 PHP 7.4+、WP 6.0+、WooCommerce 6.0+,先看站点健康再装插件。
  • 插件选 WooCommerce PDF Invoices & Packing Slips(作者 WP Overnight),免费版够用。
  • 自动发送靠 Settings → General 里的 Attach to email,必须勾选订单状态 处理中 / 已完成。
  • 中文乱码是字体问题,复制模板到主题并加 @font-face 引入中文字体即可解决。
  • 测试流程:下一单测试订单 → 改成处理中 → 订单页点 Generate 下载验证。
  • 换主题或存缓存后记得重新生成一次发票,避免样式不更新。
版权声明:本文来自 GJ站长论坛《WooCommerce PDF发票自动生成?》
原文链接:https://www.gj0.com/thread-795.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~