2016-09-02 67 views
1

我主要是一位設計師,試圖在PHP中弄溼我的腳,因爲它涉及Wordpress。根據商店和檔案頁面中的類別顯示定製產品SKU

我使用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-」。

任何提示?

感謝

+0

你嘗試''var_dump'ing $ product_cats'? – Steve

+0

非常感謝您的回覆。我只是試圖......沒有運氣。 – Leslie

+0

這意味着$ product_cats是空的,因此它不是「當代現代地毯」或「傳統東方地毯」。你需要弄清楚它爲什麼會變回空。 'get_the_ID()'返回一個有效的ID嗎?如果是這樣,那麼wp_get_post_terms裏面的內容是什麼? – Steve

回答

2

是更好地使用本地條件函數has_term()與類別蛞蝓或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()

相關問題