Support » Fixing WordPress » Hiding default category

  • Resolved bobbykjack


    Since a default category is forced, and usually doesn’t make sense to display, I think it should be made easier to exclude it from functions that fetch categories. I’ve done this on our installation by hacking get_the_category_list() to continue the foreach loop(s) under this condition:

    if ($category->term_id == get_option(‘default_category’))

    which works nicely, but is a hack that will be removed on the next upgrade.

    Is there momentum for getting this added in as an option somewhere?

Viewing 5 replies - 1 through 5 (of 5 total)
  • esmi


    Forum Moderator

    Why not just remove any reference to categories in your theme?

    Because I still want to display every other category, just not the default one.

    It really depends what level of exclusion you want, if you want to totally hide it from everywhere, admin and front side you can exclude using a filter on list_terms_exclusions.

    If you want to just hide it front side, this might suit you.

    add_filter( 'list_terms_exclusions', 'global_cat_exclude' );
    function global_cat_exclude( $terms ) {
    	if( !is_admin() )
    		$terms =  "AND t.term_id != " . get_option( 'default_category' ) . " ";
    	return $terms;

    It should exclude the default category from any category function that utilises get_terms(), which at the very least the default widgets do.

    You could make the above more selective, but you’ll have to clarify how excluded you want it to be.

    NOTE: The above example also prevents that category’s archive page from working to (that might be a desired effect, maybe not).

    If you want the archive to still work, just modify the conditional to read.

    if( !is_admin() && !is_category() )

    Hope that helps..

    One last note: If that’s your actual version to the right, the code might not work (code was tested on 3.0, should be good for 2.9.2 also).

    Those are great, detailed suggestions, t31os_ – thanks very much. I guess I want to exclude it from all front-end display as an absolute minimum, but probably no admin display – it’s useful to see which posts need to be ‘fixed’, after all – so !is_admin() looks like the way to go.

    It should do the job for excluding across various category functions, i had a quick dig into the category functions, and it looks like most if not all of the category functions have now been switched over to get_terms and get_term where appropriate, so the filter should carry across into the most common category functions, assuming you’re not back on 2.6.2 as the thread suggests.

    If you have any problems, post back… 😉

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Hiding default category’ is closed to new replies.