我主要是一名设计师,并试图在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号码都显示为&#34; S - &#34;在前面。
任何提示?
由于
答案 0 :(得分:2)
最好将本机条件函数 has_term()
与slugs或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文件中,也可以在任何插件文件中。
此代码经过测试且有效。