
本文介绍如何通过钩子函数精准地为库存状态为“preorder”的商品,在结账页面的购物车项旁添加带发布日期的自定义提示语,实现专业级预售信息展示。
本文介绍如何通过钩子函数精准地为库存状态为“preorder”的商品,在结账页面的购物车项旁添加带发布日期的自定义提示语,实现专业级预售信息展示。
在 WooCommerce 中,为特定库存状态(如自定义的 preorder)的商品添加结账页专属提示,是提升用户信任与转化的重要细节。本方案使用 woocommerce_cart_item_name 过滤器,在购物车和结账页面中动态注入语义清晰、样式轻量的提示文本。
核心逻辑如下:
- 仅当商品的库存状态(stock_status)为 'preorder' 时触发;
- 自动读取商品的 pa_release 属性值(即「发布日期」属性,需确保该属性已注册为可选的全局属性且已赋值);
- 将提示语以灰色斜体形式追加至商品名称后方,保持界面整洁不干扰主信息。
以下是完整可用的代码片段,建议添加至当前主题的 functions.php 文件或专用功能插件中:
add_filter('woocommerce_cart_item_name', 'woocommerce_cart_item_extra', 10, 3);
function woocommerce_cart_item_extra($item_name, $cart_item, $cart_item_key) {
// 检查商品是否为预购状态(注意:值为小写 'preorder')
if ('preorder' === $cart_item['data']->get_stock_status()) {
// 获取 pa_release 属性值(假设属性名为 'release',对应 taxonomy 为 'pa_release')
$release_date = $cart_item['data']->get_attribute('pa_release');
// 若存在发布日期,则拼接提示;否则可降级显示通用文案
$note = !empty($release_date)
? sprintf(__('This is a preorder. Shipping after the release (%s).', 'woocommerce'), esc_html($release_date))
: __('This is a preorder. Shipping after the release.', 'woocommerce');
$item_name .= ' <i style="color:#666; font-size:0.9em;">' . $note . '</i>';
}
return $item_name;
}✅ 注意事项与最佳实践:
- 确保自定义库存状态 'preorder' 已通过 woocommerce_product_stock_status_options 过滤器正确注册,并在后台商品编辑页「库存」模块中可选;
- pa_release 是 WooCommerce 属性的内部 taxonomy 名称(格式为 pa_{attribute_slug}),请确认您的「Release Date」属性 slug 确实为 release;若为 product_release,则应改为 pa_product_release;
- 建议对 $release_date 进行 esc_html() 转义,防止 XSS 风险;
- 如需在订单确认页(thankyou)或邮件中同步显示,需额外扩展 woocommerce_order_item_name 钩子;
- 若属性值存储为日期时间戳或需格式化(如 Y-m-d → M j, Y),可在获取后使用 date_i18n() 或 wp_date() 进行本地化处理。
该方案轻量、可维护性强,无需修改模板文件,兼容主流主题与插件,是 WooCommerce 预售场景下的推荐实现方式。

















