WooCommerce-确定当前单一产品页面的产品类别

在我的header.php中,我希望根据页面类别添加标题。

我当前的代码如下所示:

<h1 class="page-title"><?php

    if (is_category('english') || has_category('english',$post->ID)) {

        echo "music in the world of noise";

    } elseif (is_category('marathi') || has_category('marathi',$post->ID)) {

        echo "क्षितिज जसे दिसते";

    } elseif (is_category('happenings') || has_category('happenings',$post->ID)) {

        echo "Happenings";

    } elseif (is_product() && is_product_category( 'music' ) ) {

        echo "music";

    } elseif (is_product_category( 'album' )) {

        echo "albums";

    } elseif ( is_product() && is_product_category( 'workshop' ) ) {
        echo "Workshop";
    } elseif( is_product() && has_term( 'workshop' ) ) {
        echo "Workshop";
    } else {
        the_title();
    }

    ?>

</h1>
如果产品页面是单一产品页面并且该产品属于workshop类别,我希望在H1中回显WorkshopMusic相同。is_product_category仅适用于类别页,不适用于单个产品页。

如何确定单一产品的类别并回应相关文本。除WooCommerce页面外,其他if语句(is_category('english')has_category())正在运行?


解决方案

您的代码中有一些关于WooCommerce类别的错误:

  • 函数is_category()has_category()不适用于WooCommerce产品类别(WooCommerce产品类别是一个自定义分类‘product_cat’)。
  • 条件is_product() && is_product_category()将无法与&&一起使用,因为is_product()将针对单个产品页面,而is_product_category()将针对产品类别存档页面。
要在单个产品页面中定位您的产品类别,您需要将WordPress条件函数has_term()与‘<2-9]分类一起使用。
您还可以在您的条件下同时定位产品类别存档页面,前提是它们使用相同的标题…

因此您的代码(用于WooCommerce产品类别)将如下所示:

<h1 class="page-title"><?php

//      ... / ...

    if ( is_product() && has_term( 'music', 'product_cat' ) || is_product_category( 'music' ) ) {
        echo "Music";
    } elseif ( is_product() && has_term( 'album', 'product_cat' ) || is_product_category( 'album' ) ) {
        echo "Albums";
    } elseif( is_product() && has_term( 'workshop', 'product_cat' ) || is_product_category( 'workshop' ) ) {
        echo "Workshop";
    } else {
        the_title();
    }
?></h1>
如果您不需要同时瞄准产品类别存档页面,则必须在每个条件语句中删除|| is_product_category()

相关文章