Working with taxonomies in WordPress

I’ve really started to get into using taxonomies in WordPress. One of the early problems I had though was trying to get them to work – so here’s a few things I’ve learned about WordPress taxonomies.

Don’t define taxonomies in functions.php

This is the classic mistake users (and some developers) make. They register (i.e. define) taxonomies in a theme file, change the theme… and wonder where their taxonomies went! (Hint: they’re still there in your database – but if they’re not registered they can’t be accessed.) The solution to this is simple: use a functionality plugin. Then it doesn’t matter which theme you use: as long as the plugin is active, any theme can access your taxonomy data.

Managing taxonomies

WordPress doesn’t have the most robust set of tools for managing taxonomies – you can’t add them via the interface for example, and there are no built in tools for moving things between tags/categories/taxonomies. There are a couple of plugins that I’ve found very helpful:

Term Management Tools

Want to move terms between tags or categories and taxonomies? Want to rename/combine tags? Term Management Tools does that.

TC Custom Taxonomy Filter

You know those helpful dropdown menus you can use to filter posts by category etc.? TC Custom Taxonomy Filter lets you do that for every taxonomy you define. Very useful.

Making taxonomies appear – aka ‘why doesn’t it work’?

So you’ve defined your taxonomy, you’ve added new items/tags, you click on ‘View’ and you get… a 404 page. Go to Settings: Permalinks and select ‘Save Changes’. (NB: you don’t have to make any changes…!) That will update the rewrite rules and your taxonomy should work… assuming of course that you’ve got posts in that taxonomy.

A taxonomy is just a… category

Don’t believe me? Go to a taxonomy template. Add this:

var_dump($wp_query->query_vars);

Categories, tags, taxonomies… all the same thing.