如何在 WooCommerce 中自定义购物车页面,
问题:
最诚挚的问候, 罗马
表格元素内部和周围有很多可用的钩子,但遗憾的是行本身没有提供方法,例如添加列。 大多数列都有钩子,允许您操作数据在其中显示方式的非常具体的细节。
我建议 通过将其复制到主题或子主题来覆盖
cart.php
模板。
然后查看表格并四处移动/添加 <td>
元素。
继续结帐按钮只是结帐页面的链接。购物车内容位于可通过调用
WC()->cart
访问的会话中。
这将返回一个 WC_Cart 实例,其中包含 remove_cart_item
等方法。
// Get items as array keyed by what $cart_item_key refers to.
$cart_items = WC()->cart->get_cart();
// Apply logic here to identify the key you need to pass as arg.
WC()->cart->remove_cart_item($cart_item_key);
然后在结账前更换购物车。 例如。将继续按钮替换为表单提交,并在提交之前使用 JS 填充隐藏字段,这样您就可以在重定向到结账之前使用
$_POST
数据编辑购物车。
或者让 JS 将其发送到(自定义或 WC)WP REST 端点,该端点可以在结帐之前编辑您的购物车。
如果您对 php/wp(以及可能的 JS)有一定经验,这些都是相当简单的想法。
如果项目很严肃,并且您不太熟悉 php 和 WP 的内部工作原理,我建议不要更改购物车相关逻辑。 它很快就会变得复杂或破坏结帐。
如果这是一个有趣/学习的项目,我会说去做吧!这将是一个令人沮丧的过程,但也会教会你很多关于 WP 的知识,以及它的怪癖,使其在保持不合理的向后兼容性的同时不会完全无法使用。
请注意,它不会教您任何现代编程,但尝试将现代思想应用于 WP 的混乱局面,对于学习如何从复杂、大型、次优或普通的旧代码库中提取信息非常有帮助。 (此外,WP 在现实世界中几乎是不可避免的,所以了解一些东西很高兴)。