当WooCoomerce更新到3.3版时,添加了“未分类”产品类别,然后出现在显示产品的所有页面(包括WooCommerce商店页面),如果有任何具有的产品。所有没有至少一个指定类别的产品随后(逻辑上我猜)被指定为“未分类”类别。
我总是使用(可能不是理想的)方法来隐藏季节性产品,当这些产品过季时,我会从这些产品中删除所有类别。这一新的变化意味着这些“隐藏”产品突然出现在网站上,以这个新类别出售,我不想在任何页面上看到。
我在网上搜索了一种隐藏“未分类”产品类别的方法,发现这个问题很普遍。提出了许多解决方案,包括将“未分类”类别设为子类别,然后使用CSS隐藏所有子类别或隐藏类别。
看见https://wordpress.org/support/topic/uncategorized-product-category-still-showing-after-3-3-1/
然而,这些解决方案都不够“干净”或健壮。
我的解决方法是只显示我希望通过使用product categories短代码(没有未分类的类别id)可见的产品。例如:
[product_categories ids="11, 19, 18, 14, 7, 8, 9, 10, 15, 98, 16, 17"]
但这并不能解决商店页面(不使用短代码)上的问题。
我想知道是否有人有一种可靠的方法来隐藏“未分类”的产品类别,因为这是一个热门话题,目前似乎很普遍。
最合适的回答,由SO网友:Clinton 整理而成
我根据rynoldos善意提供的代码解决了这个问题(https://gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994) 具体如下:
在函数中包含以下代码。php文件:
/** Remove categories from shop and other pages
* in Woocommerce
*/
function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
$new_terms = array();
if ( in_array( \'product_cat\', $taxonomies ) && !is_admin() && is_shop() ) {
foreach ( $terms as $key => $term ) {
if ( ! in_array( $term->slug, array( \'uncategorized\' ) ) ) {
$new_terms[] = $term;
}
}
$terms = $new_terms;
}
return $terms;
}
add_filter( \'get_terms\', \'wc_hide_selected_terms\', 10, 3 );
此代码适用于WooCommerce上的商店页面。如果要将其应用于其他页面,请将is\\u shop()替换为is\\u page(“YOUR\\u page\\u SLUG”)。
我也试着找到这个问题的解决方案,但上面的代码对我来说效果很好。