在线商店收据
WCPOS 收据模板不仅限于收银台。在线商店客户可从“我的账户”或订单确认页面查看和下载订单收据或发票,并使用 WP Admin → POS → 模板 中的自定义模板呈现。
店面收据访问功能——我的账户按钮和 [wcpos_receipt] 短代码——随 WCPOS 1.9.11 提供。下文介绍的 允许客户下载收据 设置和 客户收据模板 选择器在 1.9.12 中新增;在 1.9.11 中,该按钮默认启用,且没有可控制它的设置。更早版本只能在 POS 内呈现收据。
收银员和员工无需进行任何这些操作——POS 订单 屏幕已列出所有 WooCommerce 订单,包括在线订单,并可从三点菜单中查看、打印或通过电子邮件发送其收据。本页面介绍的是另一个方向:让客户从网站自行下载收据。
“我的账户”下载按钮
收据按钮默认关闭。在 POS > 设置 > 常规 的 客户 部分中启用 允许客户下载收据。启用后,已登录的客户会在 我的账户 → 订单 中符合条件的订单旁看到 收据按钮,点击后会下载使用收据模板生成的 PDF (receipt-1234.pdf)。
该按钮会显示在 处理中、已完成和已退款的订单中,这些状态表示订单已付款。待付款、已取消和失败的订单不会显示该按钮。(开发者可以更改显示该按钮的状态。)
还需要一个已启用的收据模板;如果没有启用的模板,就没有可渲染的内容,因此即使已开启该设置,按钮也会保持隐藏。
下方的 [wcpos_receipt] 短代码无论此设置是否开启均可使用;该开关仅控制自动显示的我的账户按钮。
[wcpos_receipt] 短代码
如需在订单确认(“感谢您”)页面或我的账户 → 查看订单页面中添加收据链接,请使用:
[wcpos_receipt]
不带属性时,短代码会在任一页面自动检测当前订单,并渲染 Download receipt (PDF) 链接。在其他页面中不会输出任何内容。显式指定 order_id 仅适用于拥有该订单且已登录的客户。
属性
| 属性 | 默认值 | 作用 |
|---|---|---|
order_id | (自动检测) | 链接到特定订单。仅适用于拥有该订单且已登录的客户。 |
link_text | Download receipt (PDF) | 链接文本。 |
format | pdf | pdf 下载 PDF;html 则打开可打印的收据视图。 |
template | (店铺默认值) | 使用指定模板 ID 渲染,而非店铺默认模板。 |
class | wcpos-receipt-link | 链接的 CSS 类。 |
id | (无) | 链接的 HTML id。 |
示例
订单确认页面上的下载链接:
[wcpos_receipt link_text="Download your invoice"]
链接到屏幕上的可打印收据,而非 PDF:
[wcpos_receipt format="html" link_text="View your receipt"]
使用指定模板渲染——例如,使用 A4 发票模板而非 80mm 收银台收据:
[wcpos_receipt template="123" link_text="Download invoice (PDF)"]
模板 ID 是模板编辑页面 URL (post=123) 中的编号,位于 WP Admin → POS → 模板。
客户会获得哪个模板?
开关正下方的 客户收据模板 用于选择下载所使用的模板。默认值为 使用活动收据模板,因此客户会获得与 POS 使用的相同模板——更改活动模板后,客户收据会自动随之更新。
若要让在线订单采用不同外观,请从下拉菜单中选择特定模板。客户下载内容将始终使用该模板,不受收银员在收银台下拉菜单中选择的模板影响。如果客户模板是窄幅热敏收据样式,PDF 也会是窄幅的——对于在线订单,可能更适合使用整页文档,而模板库中的 发票 模板专为 A4/Letter 设计。
此设置控制我的账户按钮。如需为特定页面设置一次性链接,仍可使用短代码的 template 属性覆盖模板,或者使用下面的开发者筛选器在全站范围内更改模板(包括该按钮)。
模板使用与 POS 相同的收据数据载荷进行渲染,因此您的徽标、店铺标识、税务设置和自定义设置都会一并沿用。
安全性
收据链接包含订单的唯一密钥——与 WooCommerce 用于订单确认页面的机制相同——因此未创建账户的访客仍可通过确认页面上的链接访问。未持有该链接的用户需要以该订单的客户身份登录。显式指定 order_id 的短代码仅会为该订单已登录的所有者渲染。
与所有 WCPOS 结账页面一样,收据 URL 使用 WordPress 重写规则。使用朴素固定链接(设置 → 固定链接)的网站需要切换为其他任意固定链接结构。
开发者
三个筛选器控制店面界面。它们叠加在上述设置之上,适用于这些设置无法表达的条件逻辑(如按订单、按客户等):
// Force the My Account Receipt button on or off, overriding the setting.
// The filter's default value is the "Let customers download receipts" setting,
// so you only need this to override it — e.g. show the button for one user role.
add_filter( 'woocommerce_pos_storefront_receipt_my_account_button', '__return_true' );
// Change which order statuses show the button (default: processing, completed, refunded).
add_filter( 'woocommerce_pos_storefront_receipt_order_statuses', function ( $statuses, $order ) {
$statuses[] = 'on-hold';
return $statuses;
}, 10, 2 );
// Use a different template for storefront PDF downloads, overriding the
// "Receipt template for customers" setting. Receives and returns the full
// template array (null when none is configured).
add_filter( 'woocommerce_pos_storefront_receipt_template', function ( $template, $order ) {
return \WCPOS\WooCommercePOS\Templates::get_template( 123 );
}, 10, 2 );
PDF 路由本身为 /wcpos-checkout/wcpos-receipt/{order_id}?key={order_key}&format=pdf——这是 POS 用于收据的、受订单密钥限制的同一端点,其中 format=pdf 返回渲染后的 PDF,而非屏幕视图。