在 WordPress 模板中,如何检测当前页面是 WooCommerce 购物车页面还是结帐页面?

当用户在 WooCommerce 购物车或结帐过程中时,我想隐藏标题横幅。是否有标志或变量可供我检查以查看当前页面是否在这些 WooCommerce 部分中的任何一个中?我基本上想做如下事情:

if (!is_checkout() && !is_cart()) { 
  echo "<div>My Banner</div>";
}

我意识到我可以为每个部分制作一个自定义页面模板,但我只想向我的全局站点标题添加一些简单的代码。


胡子哥哥
浏览 141回答 3
3回答

湖上湖

购物车页面is_cart()在购物车页面上返回 true。结帐页面is_checkout()在结帐页面上返回 true。

呼如林

请注意,is_checkout()如果您提早需要它(我认为在加载模板之前),它是无用的,并且如果过早调用它,它将在结帐页面上错误地返回 false。这样的事情更普遍:/**&nbsp;* Checks if checkout is the current page.&nbsp;*&nbsp;* @return boolean&nbsp;*/function better_is_checkout() {&nbsp; $checkout_path&nbsp; &nbsp; = wp_parse_url(wc_get_checkout_url(), PHP_URL_PATH);&nbsp; $current_url_path = wp_parse_url("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", PHP_URL_PATH);&nbsp;&nbsp;&nbsp; return (&nbsp; &nbsp; $checkout_path !== null&nbsp; &nbsp; && $current_url_path !== null&nbsp; &nbsp; && trailingslashit($checkout_path) === trailingslashit($current_url_path)&nbsp; );}is_checkout() 适用于实际问题,但该问题在“WooCommerce check if checkout”方面在 Google 中也排名第一这同样适用于购物车:/**&nbsp;* Checks if cart is the current page.&nbsp;*&nbsp;* @return boolean&nbsp;*/&nbsp;function better_is_cart() {&nbsp; &nbsp;$cart_path&nbsp; &nbsp; &nbsp; &nbsp; = wp_parse_url(wc_get_cart_url(), PHP_URL_PATH);&nbsp; &nbsp;$current_url_path = wp_parse_url("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", PHP_URL_PATH);&nbsp; &nbsp; return (&nbsp; &nbsp; &nbsp; $cart_path !== null&nbsp; &nbsp; &nbsp; && $current_url_path !== null&nbsp; &nbsp; &nbsp; && trailingslashit($cart_path) === trailingslashit($current_url_path)&nbsp; );}

忽然笑

如果你想使用 wordpress 功能,这里有 `is_page('name')' 供您使用。您需要使用页面的名称(页面别名)。在示例中,我假设它们被称为“购物车”和“结帐”。if (!is_page('cart') && !is_page('checkout')) { ... }您还可以使用 woocommerce 为您提供的条件标签。如果您遇到 woocommerce 功能问题或想继续使用 wordpress 功能,我的回答可能是另一种选择。
打开App,查看更多内容
随时随地看视频慕课网APP