2015-12-29 70 views
0

在woocommerce商店中有多個產品類別f.x. toys, clothes, shoes, adults其中每個都有幾個子類別。 adults類別的產品如果不是正在顯示的adults或其子類別,則必須模糊處理。檢查產品的類別或其子頁面是否在WooCommerce中顯示

我在循環,現在做的是這樣的:

$for_adults = has_term(106, 'product_cat'); 

    if($for_adults && !is_product_category('adults')){ 
     echo '<img src="'.$image_src.'" alt="'.get_the_title().'" class="product-image blur" title="'.get_the_title().'">'; 
    }else{ 
     echo '<img src="'.$image_src.'" alt="'.get_the_title().'" class="product-image" title="'.get_the_title().'">'; 
    } 

的問題是,is_product_category('adults'),只有正在顯示確切的類別時返回true,哪些需要做的是,它會返回對於在未對代碼段進行硬編碼時顯示子類別頁的情況爲true。

任何幫助或gudance非常感謝。

回答

1

在這裏你去:

// Get the term 
$for_adults = get_term_by('slug', 'adults', 'product_cat'); 

// Get the term ancestors 
$product_parent_categories_all_hierachy = get_ancestors($for_adults->term_id, 'product_cat'); 

$parent_is_adults = false; 

foreach ($product_parent_categories_all_hierachy as $ancestor_id) { 
    if ($for_adults->term_id == $ancestor_id) { 
     $parent_is_adults = true; 
     break; 
    } 
} 


if (is_product_category('adults') || $parent_is_adults) { 

    echo '<img src="'.$image_src.'" alt="'.get_the_title().'" class="product-image blur" title="'.get_the_title().'">'; 

} else { 

    echo '<img src="'.$image_src.'" alt="'.get_the_title().'" class="product-image" title="'.get_the_title().'">'; 

} 
0

@ 0blongCode代碼工作正常:)但是,如果調試模式是,將出現以下通知:

注意:未定義的變量:類[ ...]線[...]注意:試圖讓非對象的財產[...]上線[...]

爲了避免這種情況,我們只需要改變

$product_parent_categories_all_hierachy = get_ancestors($category->term_id, 'product_cat'); 

$product_parent_categories_all_hierachy = get_ancestors($for_adults->term_id, 'product_cat'); 
+0

感謝@futtta,我已經調整是:) – 0blongCode

相關問題