WooCommerce PDF发票自动生成?
读完这篇你能得到什么:跟着做完,你的 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 标签页里设置:
- Invoice number 区域:Prefix 填
INV-,Next invoice number 填1,勾选 Reset yearly(每年 1 月 1 日归零)。 - Attach to email 区域:勾选
Invoice,并在下拉里勾上 Processing order 和 Completed order 两个状态。 - Template 下拉先保持
Simple,后面第四步再换。 - Download button 勾选「My Account」和「Order emails」,让客户在「我的账户 → 订单」里也能自己下载。
切到 Documents 标签页,确认 Invoice 状态是 Enabled。
保存后,去前台下一单测试订单(可以用货到付款、金额 1 元),把订单状态改成「处理中」。此时 WooCommerce → 订单 → 打开这笔订单,右侧订单操作区会多出一个「PDF Invoice」下拉和 Generate 按钮,点它就能下载发票。
注意:订单停留在「待付款」时不会触发附件邮件。测试时如果没收到邮件,先把订单手动改成「处理中」或「已完成」,同时确认主机能正常发信(可装 WP Mail SMTP 走第三方邮箱)。
第四步:解决中文乱码并换成自己的模板
这一步解决 dompdf 默认字体不含中文的问题,做完后公司名、商品名、地址的中文能正常显示。
插件自带的 Simple、Modern 模板用的是 DejaVu Sans 字体,只覆盖拉丁字母,中文会显示成方框或问号。
做法是复制一份模板到你的主题里:
- 把
wp-content/plugins/woocommerce-pdf-invoices-packing-slips/templates/Simple/整个文件夹复制到wp-content/themes/你的主题/woocommerce/pdf/my-invoice/(my-invoice名字随便起,插件认文件夹)。 - 下载一个中文字体(如思源黑体 NotoSansSC-Regular.ttf),上传到
wp-content/uploads/fonts/目录。 - 打开
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; }
- 回到 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 下载验证。
- 换主题或存缓存后记得重新生成一次发票,避免样式不更新。
原文链接:https://www.gj0.com/thread-795.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。