在 Woocommerce 商店页面的类别列表中隐藏产品类别
Hide product category from category list on shop page in Woocommerce
我想在 Woocommerce 商店页面的类别列表中隐藏某个产品类别。我发现并使用了以下代码片段:
add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
$new_terms = array();
// if a product category and on a page
if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() )
{
foreach ( $terms as $key => $term ) {
if ( ! in_array( $term->slug, array( 'books' ) ) ) {
$new_terms[] = $term;
}
}
$terms = $new_terms;
}
return $terms;
}
我在我的 wp-config 中有一个调试选项设置为 true,所以当代码片段工作并且 'books' 类别从列表中隐藏时,我收到以下错误:
Notice:: Trying to get property of non-object in
它指向这一行:
if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() )
这行写对了吗?还是我遗漏了什么?
更新:您最好使用 unset()
从数组中删除产品类别术语,这样:
add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
$new_terms = array();
if ( is_shop() ){
foreach ( $terms as $key => $term ) {
if( is_object ( $term ) ) {
if ( 'books' == $term->slug && $term->taxonomy = 'product_cat' ) {
unset($terms[$key]);
}
}
}
}
return $terms;
}
此代码在您的活动子主题(或主题)的 function.php 文件中。
已测试并有效 (不会引发错误)。
我想在 Woocommerce 商店页面的类别列表中隐藏某个产品类别。我发现并使用了以下代码片段:
add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
$new_terms = array();
// if a product category and on a page
if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() )
{
foreach ( $terms as $key => $term ) {
if ( ! in_array( $term->slug, array( 'books' ) ) ) {
$new_terms[] = $term;
}
}
$terms = $new_terms;
}
return $terms;
}
我在我的 wp-config 中有一个调试选项设置为 true,所以当代码片段工作并且 'books' 类别从列表中隐藏时,我收到以下错误:
Notice:: Trying to get property of non-object in
它指向这一行:
if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() )
这行写对了吗?还是我遗漏了什么?
更新:您最好使用 unset()
从数组中删除产品类别术语,这样:
add_filter( 'get_terms', 'exclude_category', 10, 3 );
function exclude_category( $terms, $taxonomies, $args ) {
$new_terms = array();
if ( is_shop() ){
foreach ( $terms as $key => $term ) {
if( is_object ( $term ) ) {
if ( 'books' == $term->slug && $term->taxonomy = 'product_cat' ) {
unset($terms[$key]);
}
}
}
}
return $terms;
}
此代码在您的活动子主题(或主题)的 function.php 文件中。
已测试并有效 (不会引发错误)。