Home > Net >  How to exclude a category from the category list widget for non admin users
How to exclude a category from the category list widget for non admin users

Time:02-03

I'm trying to exclude one category from the category list widget on the Shop and product archive pages for users other than the administrator. But for some reason it doesn't work.

Any help, thanks.

function exclude_category( $terms, $taxonomies, $args ) {
    $new_terms = array();

    /*if ( !is_admin()  && ( is_product() || is_shop() || is_product_category() || is_product_tag() ) ){ */
    if ( !is_admin() || is_product() || is_shop() || is_product_category() || is_product_tag()  ){  
        foreach ( $terms as $key => $term ) {
            if( is_object ( $term ) ) {
                if ( 'some-category' == $term->slug && $term->taxonomy = 'product_cat' ) {
                    unset($terms[$key]);
                }
            }
        }
    }
    return $terms;
}
add_filter( 'get_terms', 'exclude_category', 10, 3 );

I was inspired by this: enter image description here


Excluding a category on Wordpress

add_filter('get_terms', 'exclude_category', 10, 3);

function exclude_category($terms, $taxonomies, $args)
{
    $roles = wp_get_current_user()->roles;

    if (
        !in_array('administrator', $roles)
       ) 
    {
        foreach ($terms as $key => $term) 
        {
            if (is_object($term)) 
            {
                if ('uncategorized' == $term->slug && $term->taxonomy == 'category') 
                {
                    unset($terms[$key]);
                }
            }
        }
    }
    return $terms;
}

Note:

  • I've used 'uncategorized' as the category slug to test this snippet on my site, so don't forget to replace it with your own category slug.

Excluding multiple categories in WooCommerce

You could set up an array and use in_array function for the conditional check. Like this:

$excluded_cat_slugs = array ('hoodies', 'decor');  

if(in_array($term->slug, $excluded_cat_slugs) && $term->taxonomy == 'product_cat')

Excluding multiple categories in Wordpress

$excluded_cat_slugs = array ('uncategorized', 'test-category');  

if(in_array($term->slug, $excluded_cat_slugs) && $term->taxonomy == 'category')
  •  Tags:  
  • Related