WooCommerce 是目前全球最流行的电商插件,但这并不意味着你必须接受它的所有默认行为。绝大多数电商项目都需要对购物车页面、结账页面、产品展示样式、邮件内容进行修改,以适应品牌和业务流程。

WooCommerce 的定制方法与其核心架构保持一致:模板覆盖 + 钩子挂载。这两种方法都不需要修改插件源文件,因此可以安全地随着 WooCommerce 更新而保留。

模板覆盖是最直观的定制方式。WooCommerce 的所有模板文件位于 /wp-content/plugins/woocommerce/templates/ 目录中。你不需要直接修改这个目录,而是可以在你的主题根目录下创建一个 /woocommerce/ 文件夹,然后将插件中的模板文件按照相同的目录结构复制过来。例如,要修改购物车页面,复制 templates/cart/cart.php 到 主题目录/woocommerce/cart/cart.php,然后修改复制后的文件。WordPress 会优先使用主题中的模板文件。

常见的需要覆盖的模板包括:

  • single-product.php:单个产品页的整体布局

  • archive-product.php:产品列表页

  • cart/cart.php:购物车页面

  • checkout/form-checkout.php:结账页面

  • emails/ 目录下的所有文件:订单邮件模板

除了覆盖模板,钩子方法是更精细的定制手段。WooCommerce 内置了大量动作和过滤器,分布在各个页面和流程中。例如:

  • 用 add_filter('woocommerce_checkout_fields', 'your_function') 可以添加、删除或修改结账表单字段,比如增加一个“公司税号”字段。

  • 用 add_action('woocommerce_before_cart_table', 'your_function') 可以在购物车表格上方添加公告内容。

  • 用 add_filter('woocommerce_cart_item_price', 'your_function', 10, 3) 可以修改购物车中单个商品的价格显示方式。

  • 用 add_action('woocommerce_thankyou', 'your_function', 10, 1) 可以在订单完成页执行自定义操作,比如发送订单到第三方系统。

邮件的定制是另一个高频需求。除了覆盖 emails/ 下的模板外,你可以通过过滤器 woocommerce_email_subjectwoocommerce_email_headingwoocommerce_email_footer_text 分别修改邮件标题、头部和底部文案。

性能方面,建议只覆盖和挂钩你真正需要修改的部分,不要盲目复制所有模板文件。每次 WooCommerce 更新后,偶尔会出现模板同步提醒,你需要关注哪些模板发生了变化,并手动合并更新。通过合理地使用模板覆盖和钩子,你可以让 WooCommerce 几乎适任何业务场景,同时保持更新无忧。