如何修改WooCommerce购物车,结帐页面(主题部分)

mik*_*ato 24 php wordpress woocommerce

我一直在研究和调整我的自定义Wordpress主题并覆盖WooCommerce模板,现在安装了WooCommerce以纠正WooCommerce页面上出现的一堆小格式问题.我现在购物车和结账,他们使用cart.php(和任何结帐php),但也使用主要的Wordpress主题page.php.我已经能够is_woocommerce()在其他地方使用条件但不在这里,因为我已经了解到WooCommerce文档说不能用于结账和购物车.

is_woocommerce() - 如果在使用WooCommerce模板的页面上,则返回true(cart和checkout是带有短代码的标准页面,因此不包括在内). http://docs.woothemes.com/document/conditional-tags/

那么我怎样才能改变这些页面的外观呢?我有一个"查看所有帖子"和顶部的日期/时间,以及page.php的类别侧边栏,我不想出现在结帐和购物车上的明显原因,因为它们根本没有意义.我有什么选择?

我可以使用除page.php之外的其他模板吗?

这是一个选择吗?这是不好的做法......它是否会在这个循环的每个页面上造成更多负载?我把它放在哪里? http://saiyedfaishal.wordpress.com/2014/01/06/check-if-it-is-woocommerce-page/

最好的方法是什么?谢谢你的帮助!这个问题与 - 如何修改woocommerce_before_cart动作有些相关

ken*_*ken 39

另一种完全覆盖cart.php的方法是复制:

woocommerce/templates/cart/cart.php to   
yourtheme/woocommerce/cart/cart.php
Run Code Online (Sandbox Code Playgroud)

然后在yourtheme/woocommerce/cart/cart.php做任何你需要的事情


Pat*_*ren 18

您可以使用函数:wc_get_page_id('cart')来获取页面的ID.此功能将页面设置用作"购物车"页面,而不是slug.这意味着当您在设置页面上为"购物车"设置不同的网址时,它也会继续有效.这适用于所有类型的Woocommerce特殊页面,如"结账","商店"等.

例:

if (wc_get_page_id( 'cart' ) == get_the_ID()) {
  // Do something.
}
Run Code Online (Sandbox Code Playgroud)


rat*_*kin 9

WooCommerce 有许多用于修改购物车和结帐页面的选项。以下是我推荐的三个:

使用WooCommerce 条件标签

is_cart()is_checkout()函数在其页面上返回 true。例子:

if ( is_cart() || is_checkout() ) {
    echo "This is the cart, or checkout page!";
}
Run Code Online (Sandbox Code Playgroud)

修改模板文件

主要的购物车模板文件位于 wp-content/themes/{current-theme}/woocommerce/cart/cart.php

主要的结帐模板文件位于 wp-content/themes/{current-theme}/woocommerce/checkout/form-checkout.php

要编辑这些,首先将它们复制到您的子主题。

wp-content/themes/{current-theme}/page-{slug}.php

page-{slug}.php 是将使用的第二个模板,在通过 WP 仪表板手动分配的模板之后。

这比我的其他解决方案更安全,因为如果您删除 WooCommerce,但忘记删除此文件,则内部代码(可能依赖 WooCommerce 函数)不会中断,因为它从未被调用(除非您有一个页面蛞蝓{slug})。

例如:

  • wp-content/themes/{current-theme}/page-cart.php
  • wp-content/themes/{current-theme}/page-checkout.php


Pim*_*iet 8

您可以使用is_cart()条件标记:

if (! is_cart() ) {
  // Do something.
}
Run Code Online (Sandbox Code Playgroud)