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

Php 如何修改购物车、结帐页面(主主题部分),php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我一直在研究和调整我的自定义Wordpress主题,并用现在安装的WooCommerce覆盖WooCommerce模板,以纠正WooCommerce页面上出现的一系列小格式问题。我现在开始讨论购物车和结帐,是的,他们使用的是cart.php(以及任何结帐php),但也使用了Wordpress主题page.php。我已经能够在其他地方使用is\u woocommerce(),但我知道woocommerce文档说不能在结帐和购物车上使用 is_woocommerce()-如果在使用woocommer

我一直在研究和调整我的自定义Wordpress主题,并用现在安装的WooCommerce覆盖WooCommerce模板,以纠正WooCommerce页面上出现的一系列小格式问题。我现在开始讨论购物车和结帐,是的,他们使用的是
cart.php
(以及任何结帐php),但也使用了Wordpress主题
page.php
。我已经能够在其他地方使用
is\u woocommerce()
,但我知道woocommerce文档说不能在结帐和购物车上使用

is_woocommerce()-如果在使用woocommerce模板的页面上(购物车和结帐是带有短代码的标准页面,因此不包括在内),则返回true。

那么我怎样才能改变这些页面的外观呢?我有一个“查看所有帖子”,顶部有一个日期/时间,还有page.php的categories侧边栏,我不想在收银台和购物车上显示它们,因为它们毫无意义。我有什么选择

我可以让它使用不同于page.php的模板吗

这是一种选择吗?这是坏习惯吗。。。使用此循环是否会导致每个页面上的负载增加?我应该把它放在哪里?

最好的办法是什么?谢谢你的帮助!
这个问题在某种程度上与-

有关,我发现它在
page.php
中可以作为一个条件,包括WooCommerce购物车和结帐屏幕

!is_page(array('cart', 'checkout'))
您可以使用函数:获取页面的ID。此函数将页面设置用作“购物车”页面,而不是slug。这意味着,当您在设置页面上为“购物车”设置不同的url时,它也将继续工作。这适用于所有类型的Woocommerce特殊页面,如“结帐”、“购物”等

例如:

if (wc_get_page_id( 'cart' ) == get_the_ID()) {
  // Do something.
}

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

woocommerce/templates/cart/cart.php to   
yourtheme/woocommerce/cart/cart.php

然后在yourtheme/woocommerce/cart/cart.php上执行任何需要的操作

我使用page-checkout.php模板来更改我的购物车页面的标题。我在我的/wp content/themes/childtheme/woocommerce/中将其重命名为page-cart.php。这使您可以更好地控制包装html、页眉和页脚。

您可以使用条件标记:

if (! is_cart() ) {
  // Do something.
}

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

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

if ( is_cart() || is_checkout() ) {
    echo "This is the cart, or checkout page!";
}
修改模板文件 主要的购物车模板文件位于
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
{slug}
的页面)

例如:

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

谢谢!这是一个更好的解决方案。我把它放在适当的位置。我要注意的是,is_cart()和is_checkout()是WooCommerce特有的,所以如果你停用/删除WooCommerce,它们会破坏你的网站,因为你必须记住也要从你的主题文件中删除它们。很酷,很高兴知道,谢谢!实际上,我已经为archive-product.php和single-product.php完成了这项工作。我主要关心的是WooCommerce使用main page.php,不过我想这更棘手。谢谢你的回答。我要注意的是,is_cart()和is_checkout()是WooCommerce特有的,因此如果您停用/删除WooCommerce,它们将破坏您的网站。我猜page-cart.php只有在主题专门支持WooCommerce时才存在(例如,我的主题没有)。如果将该文件添加到主题中,它会使用该文件而不是page.php吗?是的,这是正确的。如果您愿意,可以将其添加到答案中。php是将要使用的第二个模板,位于通过wp仪表板手动分配的模板之后。谢谢。回来看看。。。我发现这个解决方案的优点是它不使用WooCommerce特定的功能,所以如果你停用或删除WooCommerce,它不会破坏你的网站。这是一个令人讨厌的惊喜,当你的网站部分不工作,你必须记住,你已经添加了WooCommerce特定的代码到一些主题文件。