在woocommerce商店中有多个产品类别,f.x。 VirtualHost
每个都有几个子类别。 toys, clothes, shoes, adults
类别的产品如果不是adults
或其正在显示的子类别,则必须模糊。
我现在在循环中做的是:
adults
问题是 $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().'">';
}
仅在显示确切类别时才返回true,需要做的是在显示子类别页面时返回true而不对类别进行硬编码蛞蝓。
非常感谢任何帮助或gudance。
答案 0 :(得分: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().'">';
}
答案 1 :(得分: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' );