WooCommerce 中的条件判断标签函数-在主题中判断当前页面

为了方便主题开发,WooCommerce 为我们提供了一些条件判断函数,我们使用这些判断函数在合适的条件下显示或隐藏某些内容。例如,我们只需要在商店页面显示一端文本,我们只需要使用 is_shop() 函数判断当前页面是否为商店页面就可以了。因为WooCommerce 是 WordPress 的一个插件,所有 WordPress 条件判断函数 在 WooCommerce 中也可以使用。
注意:我们只有在模板加载后,才可以在模板文件中使用这些条件判断函数,functions.php 文件在模板文件之前加载,所以在 functions.php 中,使用这些条件判断函数是无效的。

WooCommerce 中常用的条件判断函数 #

所有的条件判断函数测试当前条件是否匹配,匹配返回 TRUE,不匹配则返回 FALSE,下面的列表中是我们常用的 WooCommerce 条件判断函数,所有条件函数请参考 WooCommerce API 文档

是否为WooCommerce 页面 #

is_woocommerce()
如果页面使用的是 WooCommerce 模板,返回 true (购物车和结账页面使用的是标准的页面模板,不会包含在内)。

是否为商店主页面 #

is_shop()
当前页面为产品存档页面时,返回 true (商店)。

是否为产品分类页面 #

is_product_category()
当前页面是产品分类时,返回 true。
is_product_category( 'shirts' )
当前页面是产品分类项目 ‘shirts’ 时,返回 true,’shirt’ 为分类别名。
is_product_category( array( 'shirts', 'games' ) )
当前页面是产品分类项目 ‘shirts’ 或 ‘games’ 时,返回 true。

是否为产品标签页面 #

is_product_tag()
当前页面为产品标签时,返回 true。
is_product_tag( 'shirts' )
当前页面是产品标签项目 ‘shirts’ 时,返回 true,’shirt’ 为分类别名。
is_product_tag( array( 'shirts', 'games' ) )
当前页面是产品标签项目 ‘shirts’ 或 ‘games’ 时,返回 true。

是否为单个产品详情页面 #

is_product()
当前页面是单个产品详情页面时,返回 true, 是 is_singular 条件函数的封装。

是否为购物车页面 #

is_cart()
当前页面是购物车页面时,返回 true。

是否为结账页面 #

is_checkout()
当前分类是结账页面时,返回 true。

是否为客户账户页面 #

is_account_page()
当前页面为客户账户页面时,返回 true。

判断页面端点 #

is_wc_endpoint_url()
查看 WooCommerce 端点页面时,返回 true。
is_wc_endpoint_url( 'order-pay' )
查看支付订单端点页面时,返回 true。
is_wc_endpoint_url( 'order-received' )
查看收到订单端点页面时,返回 true。
is_wc_endpoint_url( 'view-order' )
查看查看订单端点页面时,返回 true。
is_wc_endpoint_url( 'edit-account' )
查看编辑账户页面时,返回 true。
is_wc_endpoint_url( 'edit-address' )
查看编辑地址端点页面时,返回 true。
is_wc_endpoint_url( 'lost-password' )
查看找回密码端点页面时,返回 true。
is_wc_endpoint_url( 'customer-logout' )
查看客户登出端点页面时,返回 true。
is_wc_endpoint_url( 'add-payment-method' )
查看添加支付方式端点页面时,返回 true。

判断是否为 Ajax 请求 #

is_ajax()
当前页面通过 Ajax 加载时,返回 true。

使用示例 #

下面的使用示例演示了怎么在不同的分类里面显示不同的内容。

if ( is_product_category() ) {
  if ( is_product_category( 'shirts' ) ) {
    echo '你好,我这里都 T-shirt。';
  } elseif ( is_product_category( 'games' ) ) {
    echo '你好,我这里都是游戏。';
  } else {
    echo '你好,欢迎光临我们的商店。';
  }
}