检查产品的类别或其子页面是否在WooCommerce中显示

时间:2015-12-29 20:18:54

标签: wordpress woocommerce

在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。

2 个答案:

答案 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' );