我所有的WooCommerce产品都分配了两个类别。第一类称为“所有产品”,所有产品均已分配。第二类取决于产品,可能是电影,书籍,工具等。
由于为每个产品分配了“所有产品”类别,因此在产品页面上的相关产品小部件中,您将看到每个产品,而不仅仅是第二(更具体的)产品类别。
我正在尝试在functions.php中添加一些代码,这些代码将忽略“所有产品”作为相关产品小部件的类别,但仍显示分配产品的第二类的相关产品。
到目前为止,我已经有了这段代码,该代码完全隐藏了相关产品小部件。我认为这是因为每个产品都被分配了“所有产品”,所以它删除了小部件,而不是将产品分配给第二个类别。
add_filter( 'woocommerce_related_products', 'exclude_product_category_from_related_products', 10, 3 );
function exclude_product_category_from_related_products( $related_posts, $product_id, $args ){
// HERE define your product category slug
$term_slug = 'all-products';
// Get the product Ids in the defined product category
$exclude_ids = wc_get_products( array(
'status' => 'publish',
'limit' => -1,
'category' => array($term_slug),
'return' => 'ids',
) );
return array_diff( $related_posts, $exclude_ids );
}
如何编辑此代码,以便隐藏“所有产品”类别而不显示在相关产品中,但仍显示其他分配类别的相关产品?
您最好选择woocommerce_get_related_product_cat_terms
。您可以使用它来删除'all-products'
用于获取产品的类别数组。
add_filter( 'woocommerce_get_related_product_cat_terms', 'exclude_product_category_from_related_products' );
function exclude_product_category_from_related_products( $cats_array ) {
$term = get_term_by('slug', 'all-products', 'product_cat');
if ( $term && ($key = array_search($term->term_id, $cats_array)) !== false) {
unset($cats_array[$key]);
}
return $cats_array;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句