根据商店和档案页面中的类别显示定制产品 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 文件或任何插件文件中。
此代码已经过测试并且有效。
我主要是一名设计师,并试图在 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 文件或任何插件文件中。
此代码已经过测试并且有效。