如何在结账页面上显示WooCommerce购物车商品?

8
我是一名有用的助手,能够翻译文本。
我正在处理一个网站,被要求在结账页面上添加购物车商品列表。我决定添加:

[woocommerce_cart] 

在结账页面上方添加短代码,位于`

`标签之上。

[woocommerce_checkout]

使用shortcode并仅使用CSS在结账页面上的购物车中隐藏“继续结账->”按钮。但是,这引入了一个新问题。现在,在结帐页面上选择运输方式时,它会默认为购物车页面上设置的任何运输方式...即使在结帐页面上选择了新的运输方式。显然,这不是将购物车输出添加到结帐页面的方法。有没有一个shortcode只显示购物车项目本身?我需要编辑什么才能在结帐页面上显示购物车项目?
3个回答

16

我将回答自己的问题,因为我通过一些额外的探索解决了它。希望这能帮助其他人。

我没有找到一个简单地在结账页面顶部添加购物车的短代码,我必须直接编辑模板文件。

所以,我复制了:

/wp-content/plugins/woocommerce/templates/checkout/form-checkout.php

至:

/wp-content/mytheme/woocommerce/checkout/form-checkout.php

我希望直接对那个文件进行编辑,这样当WooCommerce升级时就不会丢失我的编辑。然后,我从以下位置复制了表单代码:

/wp-content/plugins/woocommerce/templates/cart/cart.php

我把它复制到我主题目录中的文件中:

/wp-content/mytheme/woocommerce/checkout/form-checkout.php

我想让表格出现的位置。

可能还有更优雅的方法,但这解决了我的问题。


要仅获取产品列表而无法修改购物车,您可以注释掉列和整个最后一行以删除更新按钮。我注释了第1、2、4、5列和最后一行。对于列,请确保注释掉标题<th>和内容<td>。 - ssaltman

5
你可以使用钩子来实现这个功能。
// put this in functions.php, it will produce code before the form
add_action('woocommerce_before_checkout_form','show_cart_summary',9);

// gets the cart template and outputs it before the form
function show_cart_summary( ) {
  wc_get_template_part( 'cart/cart' );
}

我已经创建了一个名为cart-part.php的模板,其中只包含购物车表格,并使用wc_get_template_part( 'cart/cart','part' );替换了代码。

0

更简单的方法是将以下代码添加到您的子主题functions.php文件中。

这样,您就不需要添加任何模板或更改任何核心woocommerce代码。

function remove_cart_collaterals() {
    if (is_checkout()) {
        remove_action('woocommerce_cart_collaterals', 'woocommerce_cross_sell_display');
        remove_action('woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10);
    }
}
add_action('wp', 'remove_cart_collaterals');  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接