根据商店和档案页面中的类别显示定制产品 SKU

Displaying a customized product SKU based on categories in shop and archives pages

我主要是一名设计师,并试图在 PHP 中弄湿我的脚,因为它属于 Wordpress。

我正在使用 woocommerce 并希望在类别页面上显示 SKU。到目前为止我有这个:

//* add SKU to shop page

add_action( 'woocommerce_after_shop_loop_item_title', 'shop_sku' );
function shop_sku(){
global $product;
echo '<span itemprop="productID" class="sku">SKU: ' . $product->sku . '<br></span>';
}

效果很好。但是,我的客户希望根据类别在 SKU 之前显示一个字母。与其遍历并更改所有 SKU 编号,我认为添加到功能中可能更有意义。

add_action( 'woocommerce_after_shop_loop_item_title', 'shop_sku' );
function shop_sku(){
    global $product;
    $product_cats = wp_get_post_terms( get_the_ID(), 'product_cat' );

    if ($product_cats == "Contemporary Modern Area Rugs") {
        echo '<span itemprop="productID" class="sku">SKU: C-' . $product->sku . '<br></span>';
    }

    elseif ($product_cats == "Traditional Oriental Area Rugs") {
        echo '<span itemprop="productID" class="sku">SKU: T-' . $product->sku . '<br></span>';
    }

    else {
        echo '<span itemprop="productID" class="sku">SKU: S-' . $product->sku . '<br></span>';  
    }
}

我的问题是只满足第三个条件,意思是所有的SKU编号都显示前面有一个"S-"。

有什么提示吗?

谢谢

最好将本机条件函数 has_term() 与类别 slug 或 ID 一起使用。

我对你的代码做了一些定制:

add_action( 'woocommerce_after_shop_loop_item_title', 'shop_sku' );
function shop_sku(){
    global $post, $product;

    //It's better to REPLACE the category name by the slug or the ID !!!

    if ( !has_term( 'Contemporary Modern Area Rugs', 'product_cat' ) && !has_term( 'Traditional Oriental Area Rugs', 'product_cat' ) )
        $letter = 'S';

    if ( has_term( 'Contemporary Modern Area Rugs', 'product_cat' ) )
        $letter = 'C';

    if ( has_term( 'Traditional Oriental Area Rugs', 'product_cat' ) )
        $letter = 'T';

    echo '<span itemprop="productID" class="sku">SKU: '. $letter .'-' . $product->sku . '<br></span>';
}

当然,这会进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

此代码已经过测试并且有效。


参考:WordPress Function has_term()