New and Exciting Ways to Organize Your WordPress Powered Website

By Michael Fields

This article is all about how to achieve better organization in WordPress. Whether you consider yourself a blogger or a website administrator, a beginner or a super-guru, there are a few rather easy things that you can do to help your visitors find the information that they are looking for. I have tried my best to make this topic digestible by every level of WordPress user therefore there are no code examples to speak of. Every customization can be made via free and open-source plug-ins. You can find a list of all plug-ins mentioned at the bottom of this page. Let’s get things started by looking at the ways that WordPress allows us to organize our posts…

WordPress Provides 2 ways to organize our posts.

These are Categories and Tags.

My Thoughts on Categories

  • Categories are required. It is not possible to create a post without first adding it to a category. Due to this fact, I think it is safe to say that most WordPress users are familiar with the concept of categorizing their posts. I mean really, who wants all of their content published as “Uncategorized”
  • Categories are Hierarchical. If you so choose, it is possible to arrange your categories in a manner where one category contains many other categories. This is very helpful for organization on sites where the content covers a wide range of topics.
  • Categories are Mature The category system has been around in WordPress for a very long time, maybe even since the beginning. Categories are as much of a part of WordPress as posts therefore they have a very mature presence throughout an installation including
    • The ability to be used in global site navigation.
    • Categories can be displayed on the bottom of single posts views.
    • There is a default widget that lists all active categories.
    • WordPress themes have the ability to create a link to the previous or next post that is in the same category as the one currently being viewed.
  • Categories have a good name The term category is universal. It is broad enough to encompass just about any set of objects. It is hard for me to think of a group of objects that cannot be categorized in some manner.

My Thoughts on Tags

  • Tag are Optional I believe that it is the optional nature of tags which can sometimes push new users away from their usage. I know that when they were introduced into WordPress, I had no idea what to do with them and I really had no reason to find out since my site worked just fine without them.
  • Tag are not hierarchical Unlike categories, tags cannot be further organized into sub groups.
  • Tags are Less Mature
    • Tags are not intended to be used as global site navigation.
    • To create previous or next post links on single views would require the addition of another navigation structure not provided in the WordPress core.
  • Tags have an ambiguous name While I can think of plenty examples of how tags are used in the real world it is hard for me to apply these examples to the scope of a website. You can find tags on items sold at department stores, there are tags on christmas presents, you may even find children playing a game of tag at the playground. The point that I’m trying to make here is that when you apply a common usage of this word to your website, it is hard to visualize a connection; unless, of course, you want to wrap up your website and give it away as a gift.

My Thoughts on the Future

We’ll start this section with a few questions “Don’t you think it would be nice to take control of WordPress… to organize your content in a way that best reflects you? Is it even possible to do so?” The answer to both of these questions is YES. It is easy to add your own personal flair to the way that your posts are organized. Doing so can increase the usability of your site drastically allowing visitors to find the content they are looking for faster. This can be achieved by setting up Custom Taxonomies – a very powerful, hidden feature that is simple to unlock and even easier to use. During the course of this article I will let you know what custom taxonomies are, show you how to use them, help you migrate from a tag-based system to a custom system as well as provided you with real world examples and a few hypothetical examples explaining how you might use this feature to customize your own WordPress Powered website.

Before we get started I think that is important for you to understand what a taxonomy is…

For those of you who cannot watch the video, please visit my Understanding Taxonomy in WordPress page.

Would you Care For a Bowl of Tag Soup?

I’m sure that you’ve been served up a bowl of tag soup in the past. Ever visit a site where every post has an average of 50 tags each? I know I have! When there is an excess of tags their effectiveness seems to fly out the window. In the next section we will be looking at a real world example where an abundance of tags were used. I will walk you through how the same basic information can be displayed using custom taxonomies and a few of the benefits to using a custom system.

Under the microscope we have Hungry Eyeball which is a site based in Portland, OR that posts a large number of art-related events that take place in the city. If you look at the image on the left (click to enlarge), you will notice that there are quite a few tags used on this post. 41 to be exact. Are all these tags necessary? Not in my opinion. Can the information be better expressed in another way? I think so. Let’s give it a closer look, shall we?

Breaking Down the Tags

Here, I have analyzed the tags placing each one into a group based on the information that it conveyed. I was able to determine that there we’re 5 separate types of tags: the artist’s Full Name, the artist’s Last Name, Location of the event, The Type of event, and finally the Neighborhood in which the event takes place. It is easy to see that the artist last names are redundant – as they are already expressed in the full name – and can be removed. There are two tags for the venue where the event takes place. I chose to remove the one that included the word Portland mainly due to the fact that “Redux Portland” is not the correct name for the venue, it is just Redux. I then consolidated the three tags that were used to define the type of event into one word: “Embroidery”. In my opinion, this was the one word in the group that sets this event apart from others.

The Same Basic Information Expressed in a Different Way

Here is a visual example of how the post could be better classified using custom taxonomies instead of the original tag system. First of all, we have minimized the total number of terms from 41 to 26 by cutting down on redundancies. We have also organized the information into sections which will allow readers to easily find the information that they are looking for as well as provide them a sort of “definition” for the term. When I look back at the original example with the tags, I have absolutely no idea what “Iron Pony” or “Redux” refer to. These two names are rather ambiguous until classified correctly as either one could be the name of the venue or a name of an artist in the show.

Organizing your tags into custom taxonomies can be beneficial to both you and your readers.

Live Examples

I have compiled the following live examples for you to look at. Unfortunately, I had a hard time finding more than this. If you or someone you know are using custom taxonomies on your site, feel free to leave a link and a brief description in the comments section at the bottom of this page.

My Design Portfolio

[browsershot url="http://design.mfields.org" width="200" align="right"]

I have seen many other design portfolios in my day. One link that I frequently click on other peoples portfolios is their clients page. It is interesting to see a list of the people and companies that a certain designer has worked for. It is even better if you can see all of the work that the designer has produced for that client. By using a custom taxonomy called “client” and the Taxonomy List Shortcode plug-in, I was able to create a page listing all of my clients. Each client name links to a page that contains all of the work the I have completed for them. I have also used the Taxonomy Terms List plug-in to display the client’s name on the page containing the individual design.

My Artwork Portfolio

[browsershot url="http://art.mfields.org" width="200" align="right"]

I use repeated symbolism in many of my pieces. I thought that it would be neat to bring this to my visitor’s attention. If you view the symbolism page, you will see a list of all of the symbols that I have chosen to feature. You will also notice that there is an image representing the symbol as well as a description. You can click on each title to view all of the artwork that contain this symbol. The functionality for this page is achieved via the Taxonomy Images Plugin. My art portfolio also has another custom taxonomy powered page for collectors. I thought that it we be neat track where my paintings have ended up over the years. This example is very similar to the clients section in my design portfolio.

WordPress TV

[browsershot url="http://wordpress.tv" width="200" align="right"]

WordPress.tv uses custom taxonomies to help organize the videos that they post. If we navigate to the video of Lorelle VanFossen’s presentation at WordCamp Portland 2009 we will notice that there is a screen shot of the video on the left and a long list of useful information pertaining to the video on the right. The following headings use custom taxonomies to produce the navigation Language, Producer and Speakers. I think that it is very helpful to have the videos organized by the language of the speaker. It is easy to see from the example that (at this time) there are 416 videos available in the English language.

A Movie Database

[browsershot url="http://popcritics.com/" width="200" align="right"]

This example was created by WordPress expert Justin Tadlock who has put together a movie database which uses custom taxonomies to organize movies in a very useful way. If you look down the right side of this Hannah Montana movie, you will see genres, actors, directors, writers, producers and studio. We can easily see that the studio that produced this film is Walt Disney Video and if we click on the link we are brought to a page showing all films by Walt Disney Studio.

Hypothetical Examples

I’ve compiled this list of hypothetical examples in the hopes that it will inspire people to set up their own custom taxonomies. Their true power comes to light when used in an environment that is familiar to you. This list is not exhaustive, but I hope that it will get your gears turning! If you have any ideas about how this list can be expanded, please leave a comment.

Sports blog

This is the first real application for custom taxonomies that I came up with. It just seems so natural to me. If you cover sports of any kind on your blog, I believe that your readers will definitely benefit from setting up custom taxonomies. Imagine if you had a page that listed every player that you have ever written about. Readers could skim through this page and find a link to every post where you mention Shaq Attack. Don’t stop at players though, you could easily organize your posts based on “Teams”, “Coaches” and “Leagues” as well.

Fiction Blog

Do you write fiction? Better yet fantasy fiction? Authors such as J. R. R. Tolkien have created complex worlds where newcomers could really benefit from a glossary. Why not use custom taxonomies to create an interactive glossary by organizing your chapters by the characters or locations featured in the chapter? You can use the taxonomy pages to create definitions and add illustrations too.

Food Blog

Perhaps you write restaurant reviews or commentary on the local food scene. If so, it might be a good idea to organize your blog posts by “Restaurant” or “Entrée”. Another neat idea would be to create a taxonomy named something like “My Experience” with terms such as “Loved it”, “Hated it”, “Great Service”, “Poor Service” or even “Food gave me an Upset Stomach”.

Music Blog

I believe that blogs about music would could also help readers find the content that they are looking for by adding taxonomies for things like “Performer”, “Band”, “Record Label” or “Release”.

Design Portfolio

Turn your website into an interactive resume using custom taxonomies.

  • Clients Who did you work for?
  • Skills Did you use a specialized skill to complete the project? This taxonomy may possess the following terms: page layout, color separation or color correction
  • Tools What did you use to get the job done? This taxonomy may possess terms like: which may possess the following terms: Photoshop, Illustrator, Indesign or a pencil and paper.

Art Portfolio

  • Symbolism As shown in the above example, organizing your artwork by symbolism can add a new dimension to your art portfolio enabling viewers to get a feel for some of the thought that goes into your work.
  • Collector Organizing your art by collector can help you track the final destination of sold work.
  • Medium Creating this taxonomy may be appropriate if you create in a variety of media thus allowing your viewers to find the work created with the media they are interested in.
  • Location This is more for you than your visitors, but can be a useful method of inventory tracking. Do you frequently show work at galleries? Is work constantly leaving your hands? By setting up a location taxonomy you can use your website to track the location of your pieces.
  • Body of Work This is something that may only appeal to artists who create separate bodies of work but could be a rather good use of a taxonomy.

Useful Taxonomy Plugins

This is a short list of the plug-ins that I have mentioned in this article as well as a couple of others. If you have made a plug-in that makes using custom taxonomies easier, please leave a comment below.

GD Custom Posts and Taxonomy Tools
Enables you to create and manage your own custom taxonomies.
Download
Taxonomy Terms List
Automatically create multiple lists of taxonomy terms associated a given post in the single post view. This one is plug and play, just activate and you’re good to go.
Download
Taxonomy List Shortcode
Add a shortcode to your WordPress powered site enabling you to create a styled list of terms for any given taxonomy. Useful for creating custom index pages for your taxonomy structures.
Download
Taxonomy Images
Trick out your categories, tags and custom taxonomies! This plug-in enables you to link images from your media library to every term of every taxonomy on your WordPress installation. This plug-in also includes a shortcode enabling you to make stylized index page of your taxonomy terms.
Download
Simple Taxonomies
Another plug-in that enables you to create and edit custom taxonomies. Simple Taxonomies also enables you display taxonomies in a few different places throughout your blog.
Download

52 Comments Leave a comment

  1. JLeuze April 18, 2010 at 2:55 am

    This is a great post Michael. Thanks for taking the time to put together that screencast, your food pyramid example gives me a much better idea of how a custom taxonomy could be used.

    I’ve been wanting to try out a custom taxonomy on one of my sites, but I wasn’t sure if I wanted to use a plugin or add it to the theme. It looks like there are some good plugin options, so I’ll have to check those out first.

  2. Michael Fields April 18, 2010 at 3:01 am

    JLeuze,
    Thanks for your kind words! Glad that the article helped you to understand what custom taxonomies are. The GD Taxonomy Tools plugin works pretty well, but if you are comfortable writing code I would highly suggest that you write a custom plugin for yourself where you store all additions and customizations like custom taxonomies, additional image size and your own custom functions. This way if you ever decide to change your theme, you won’t have to find all of the custom code and move it to the new theme. It’s a neat little trick that I plan on putting together a small article about. It also really helps for client work -> where if the client decides to change their theme -> they will not loose the customizations… might save you a phone call :)

  3. John Bacon April 18, 2010 at 3:56 am

    Brief, to the point and easy to follow. Great post for the person wanting to take their site to the next level using custom taxonomies.

    Obligate yourself to understand taxonomies by reading this post. Bookmark it. If you don’t do it now, you owe it to yourself and your users to use taxonomies by the time you get to WordPress 3.0.

    http://wordpress.org/extend/plugins/custom-post-type-ui/ is a great plugin too.

  4. Michael Fields April 18, 2010 at 4:07 am

    Hi John, thanks for writing and I agree, that does look like a great plugin! If anyone reading wants to take the ideas in this article to the next level, I highly suggest that they download Custom Post Type UI and play around on a test server somewhere. There’s a helpful screencast on the plugin’s page as well.

  5. Lee Willis April 18, 2010 at 7:42 am

    Hi Michael,

    A great writeup on why people should use taxonomies – it’s a difficult concept to explain to people – but can make the world of difference as to how easily people can navigate content.

    Cheers
    Lee

  6. Mac_Boy April 18, 2010 at 3:24 pm

    Excellent illustration on how to go from tag-soup to an organized catalog!

    Now that you’ve explained the “why” aspect, its time to dive into the nuts-n-bolts of “how”.

    Build a recipe catalog as an example by using a specific plugin (or more), modifying theme files, etc. It would have pix, multiple taxonomy elements, posts, comments, etc.

    The 2nd quarter is upon us!

    :-)

    Thanks for a nice article!

  7. Michael Fields April 19, 2010 at 4:29 am

    Lee, Thanks! I totally agree… If only there was support in the administration panels people might get adventurous… just sayin’ Glad you liked the article :)

  8. Michael Fields April 19, 2010 at 4:35 am

    Thanks Mac Boy. I’ve eaten many a bowl of the dreadful slop in the past couple of years! Just trying to do my part to inform people that there are alternatives. A recipe catalog sounds like an interesting use of custom taxonomies although it is a bit outside of my realm of knowledge. If you decide to write it up, I would gladly link to the article.

  9. dragonian May 2, 2010 at 7:13 am

    this is just what i need for the new video/movie site i am developing. i was searching google and found this post. thanks for explaining. before i discovered this blog, i was thinking to use pod (cms plugin) but i think that is too complicated for me because i have to go down and dirty and write code. i believe this taxonomy thing will allow me to pull this thru. again, you never know how much you have helped me. i was brainstorming for the past 2 days regarding how i should structure my site. now everything is crystal clear.

  10. dragonian May 2, 2010 at 1:59 pm

    just to add on to my comment. forgot to mention. i was reading about taxonomy in wordpress for ages. i didn’t noticed it and didn’t care about it. i thought taxonomy is a branch of science. way back in high school. i was wrong. it is more than that. and very powerful i believe.

  11. Leaf. May 10, 2010 at 2:50 am

    While i WANT to love taxonomies, I’m just not sure I can. Which is less-than ideal after I’ve built an entire site around them.

    While they rock, they lack meta title and description support (don’t they?). It’s a nightmare. And while there are several work-arounds that allow you to define meta titles to the taxonomy level, there are none that do so to the term level.

    So, if you care about SEO, and unless you’re happy with multiple, multiple duplicate title/description tags, custom taxonomies really suck.

    I hope I’m really wrong, but I have looked around online and I can’t see any solutions. Please advise, somebody, anybody.

  12. Michael Fields May 11, 2010 at 1:47 am

    Leaf,

    While they rock, they lack meta title and description support (don’t they?). It’s a nightmare. And while there are several work-arounds that allow you to define meta titles to the taxonomy level, there are none that do so to the term level.

    I think that you are right -> The taxonomies themselves do lack title & description meta information, but this can easily be supplemented by the use of a page that lists all terms of a given taxonomy. If you follow this practice, You can use all of the features of the page to add the meta to your theme and enhance the metadata with any one of the popular SEO plugins for WordPress.

    As for meta data on the term level, WordPress natively supports both title and description of every term regardless of the taxonomy it is associated with. You will most likely need to do a simple theme mod to display this information in the html meta tags in your theme’s header.php file.

    So, if you care about SEO, and unless you’re happy with multiple, multiple duplicate title/description tags, custom taxonomies really suck.

    I don’t really understand what you are referring to here, If you could clarify in detail, I might be able to think up a solution.

    Best wishes,
    -Mike

  13. Michael Fields May 11, 2010 at 1:53 am

    dragonian,
    Thanks for writing. Glad you found the article and that it has helped you to better visualize a way of organization for your site. I have only played around with the pods plugin briefly and I agree with you that it is usually overkill. I would rather use WordPress’s built in functionality to achieve similar results where possible. The soon-to-be-released custom content types feature in 3.0 in conjunction with custom taxonomies will open up a world of customization possibilities that I am looking forward to.

  14. Michael Fields May 11, 2010 at 1:55 am

    Same here! It kinda sounds like some hideous disease or something :)

  15. tex88 May 11, 2010 at 7:43 am

    Great stuff Mike, thanks! I think I’m going to use Custom Taxonomies a lot in a wp site I’m about to build.

    But I have a question about the UI when adding a term to a post. Like tags, there is just a text-input, and a few ‘most popular terms’ links. But one of my taxonomies (“Industries”) will have about 100 terms, and I don’t think I can rely on my client remembering the exact term to type manually. So I wonder.. do you know if the UI can be CheckBoxes (how Categories are handled) or a Select-Multiple Box?

    Thanks! -Todd

  16. Michael Fields May 11, 2010 at 9:51 am

    Thanks Todd! The easiest solution to would be in WordPress 3.0 to register the taxonomy as hierarchical and WordPress will create a checkbox-based user interface for you.

  17. graq May 11, 2010 at 2:42 pm

    Am I right in thinking that taxonomies can apply to a range of different types of things (posts, media items..). Is there a way to apply them to Users? The goal being to define a group of users as having a set of properties.

  18. tex88 May 11, 2010 at 6:32 pm

    Wow. Yep, that’s easy! Thanks again Mike.

  19. Michael Fields May 11, 2010 at 7:21 pm

    Am I right in thinking that taxonomies can apply to a range of different types of things (posts, media items..).

    Yes. Just about any object can have taxonomies defined. Some objects – like media – do not have a built-in interface though.

    Is there a way to apply them to Users?

    While this is possible – it will require some custom coding. WordPress does not technically support this, but the groundwork is in place if you care to take things to the next level.

  20. Leaf. May 12, 2010 at 3:42 am

    Thanks for the follow-up Mike. I’m starting to think my problem might be theme-specific; the theme I’m using uses index.php for both the index (obviously) and the archives. So perhaps the grief I’m having calling taxonomy titles and descriptions stems from this..?

  21. Michael Fields May 12, 2010 at 5:00 am

    No problem, I would agree that a theme set up like this can be a bit of a pain but luckily you can use WordPress’ Template Hierarchy feature to ease some of this pain. I would suggest that you create a new file in your active theme called taxonomy.php and play around with displaying the term data in this template.

    The fastest way I know to get the information you are looking for is to use the get_queried_object() method of the $wp_query object. Give this example a try in you taxonomy.php file:

    <?php
    $term = $wp_query->get_queried_object();
    print "\n\t" . '<h1 class="taxonomy-term-title">' . apply_filters( ' the_title', $term->name ) . '</h1>';
    print "\n\t" . '<div class="taxonomy-term-description">' . apply_filters( ' the_content', $term->description ) . '</div>';
    ?>
    

    If you need more info, the following code block should illustrate all of the available properties of the $term object:

    <?php
    $term = $wp_query->get_queried_object();
    print '<pre>' . var_export( $term, true ) . '</pre>';
    ?>
    

    Hope this helps!

  22. Leaf. May 13, 2010 at 3:35 am

    wow: thanks for this. I will (attempt) to consume and test it. Will get back to once I HAVE. THANKS AGAIN.

  23. Mac_Boy May 14, 2010 at 2:08 pm

    Can a hiearchical taxonomy be displayed as a menu pull-down (select or multiple-select) instead of a set of checkboxes?

    That way, a txonomy with more than 10 terms can be less daunting within the admin interface.

  24. Michael Fields May 14, 2010 at 2:47 pm

    Currently, no. But I was thinking about creating something like this… not sure if I will though. I totally agree with you about the checkbox interface being a bit large especially if you have three of them set up for posts (like me). It’s a pain to have to scroll around to find the taxonomy box and then back up to the content to see what else you might like to add as a taxonomy.

  25. shawn May 15, 2010 at 4:45 am

    Please consider this addition would make things much cleaner.

    Would also love to see the addition to the post edit tax box, where I can add/edit the tax right there. So if a tax does not exist, and the user is adding a new one, the user can add in the tax description, and image (your image plugin).

    Then at least I am not asking my user to leave the post-edit screen just to ‘complete’ the tax.

  26. Michael Fields May 15, 2010 at 5:40 am

    I think that a thickbox interface may be the way around this issue. I’ll see what I can come up with. Might not be for a bit though… need to finish a few other projects before I get to it.

  27. Steve Media July 13, 2010 at 12:27 pm

    Thanks for these great examples; you have opened up my mind to think about the taxonomy uses in different ways than I originally had envisioned using them. When I first started reading about taxonomy I had on way of using them in my mind, and now I see there are many more uses as well! I am wondering now though if my first ideas about using them will get deployed by any theme or plugin designers..
    Here is my thought, and correct me if I am wrong or far off..
    I can set taxonomies like “small product” and “large product” for some posts, and have my theme display a different page layout if it detects that there is a “product” taxonomy set to the post?
    That was my first though of using them.. and now I am thinking perhaps it would be easier for a site that featured a lot of products, or art, or media, etc to maybe show a different page layout for posts that were not labeled with product.. that way a majority of the posts created would not have to have a checkbox selected.. and the standard contact pages and such could have.

    However it is best done for the end user and in which order, I guess my question is how easy would it be to display a different page layout, and perhaps a different sidebar layout depending upon taxonomies that were set.. From my first reading about them, I had thought this would be a great tool for just that, but I have not seen any code or themes that are set to take advantage of such, I have noticed that suffusion theme says something about using tax, but haven’t tested one out to see how it uses them.. I wonder if it would take a plugin on top of theming to do what I am thinking here..

  28. Rick July 29, 2010 at 6:27 pm

    I’m looking into applying taxonomies to users too, but there’s a drawback I’m not sure how to figure out. Since posts and users are saved in different tables, they use different sets of IDs, so it’s impossible to store user-tax relationships in the same table that stores post-tax relationships because, despite being completely different things, a user and a post can have the same ID number.

    A possible workaround could be to create a second table exactly like wp_term_relationships, but for user-tax relationships only. This way you could separately list users by taxonomy and posts by taxonomy, but if you want a category to apply to both I can’t yet see a way to list them all together.

    Any thoughts?

  29. Michael Fields July 29, 2010 at 11:37 pm

    Rick,
    I too have given this some thought in the past and while it is definitely a custom application of the taxonomy system, I believe it to be totally feasible working with what WordPress has already provided us. If you take a look at the pre-installed taxonomies, you will notice that one sticks out like a sore thumb: Link Categories. Why do they stick out? 1. I never, ever use them and 2. Links are stored in a completely different database table, much like Users. Although I have never tested this, I would strongly suggest studying the WordPress link system to figure out how they have pulled it off.

    Hope this helps :)

  30. Rick July 30, 2010 at 3:29 am

    Great idea, Michael! I’ll look into it and post here if I get to something worth mentioning :)

    Thanks!

  31. Jane Wells August 2, 2010 at 1:46 am

    Here’s official confirmation: WordPress.tv does use custom taxonomies for the fields displayed to the right of each video, like Producer, WordPress Version, etc. It was one of the first sites to do so, back when the feature was still in development.

  32. Michael Fields August 2, 2010 at 1:53 am

    Awesome! Thanks for the info. I thought so, but I like to be sure. Also, thanks for pointing out that it was the first site to use this feature. I’ll definitely work this in to the presentation.

  33. Sarah August 4, 2010 at 3:40 pm

    Hi Michael,

    I’m not sure if this is what you’re looking for, but we used Custom Taxonomies quite a bit for vitalventure.gmri.org/activities

    Individual Activity pages are interconnected with their overarching Watershed Experiences. The custom taxonomies allowed us to create a hierarchical, interconnected system that enabled us to create the ajax search functionality on the activities page.

    Cheers,
    Sarah

  34. Michael Fields August 6, 2010 at 12:55 pm

    Sarah, that’s exactly what I’m looking for! Nice example. Thanks for posting.

  35. Rick August 6, 2010 at 6:39 pm

    Sarah, how did you connect experiences with activities? As far as I can tell, they’re both custom post types.

  36. Sarah August 18, 2010 at 6:08 pm

    Thanks Michael.

    Rick: It’s some (semi-hacky) stuff with the taxonomy slugs, and finding parent pages/categories.

  37. Rick September 11, 2010 at 5:40 pm

    Michael,

    I made an approach to this (applying taxonomies to users) using custom user profile fields. Please check my detailed post at WordPress.org and let me know what you think.

  38. Zentaurus September 25, 2010 at 12:35 pm

    I am going to need to read this some times until I master it. Just yesterday I started studying this matters and, out of luck, I arrived here. Fate! :D

  39. Andrew October 1, 2010 at 7:17 am

    This tutorial seriously made my evening. One downside though is that I got all excited and then realized taxonomies are not compatible with Gravity Forms.

    I’ve been looking for a way to allow registered users to post to the site without going into the admin panel and gravity forms totally makes this easy. Unfortunately, the original plan was to allow them to select categories. An example would be a hierarchy such as Campus Programs -> Bachelors -> Web Design & Development. Unfortunately it looks terrible to see a drop down with not clearly indented sections. So I thought taxonomies would help in that I could ask them to choose from multiple drop down options of taxonomy main categories and sub categories so people can leave posts on the multi-level aspects.

    Now I am a wee bit sad as I can’t seem to get it to work so I am back to the drawing board. Wish me luck and thanks again for opening my eyes. This will really help out for future websites I will build in the future.

  40. Lily October 2, 2010 at 8:00 pm

    Is there a plugin/code you recommend that would let users search through the taxonomies? For example Location = X, Event = A, where Location is a taxonomy and Event is also a taxonomy?

  41. Denis November 18, 2010 at 1:14 pm

    Hi, thanks for the information.
    My question is, is it possible to show diffrent taxonomies on diffrent custom posts?
    For my artists I like to have diffrent taxonomies like, artist, language, instrument etc.
    for the concerts I like to have venue, city, artist.

    how does that work?
    Denis

  42. Haluk December 5, 2010 at 1:34 pm

    Hi, Micheal

    If I create a custom taxonomy called “category” or “Categories”. what would be the technical differences ( the pro’s and con’s ) when that particular custom taxonomy is compared with the built in “categories” that come with WP out of the box?

    URL’s wise, functionality wise… what do you say?

  43. Michael Fields December 5, 2010 at 2:15 pm

    First of all, I’m highly would suggest that you never attempt to overwrite the default category taxonomy. At least not in a production environment. Reason? It all comes back to “If it ain’t broke than don’t try to fix it”.

    I’ll try to answer your other question to the best of my ability, but I will use a custom hierarchical taxonomy named Topic as an example and compare/contrast with categories.

    1. Categories are required. This means that every post you publish must be in a category. If one is not chosen, WordPress will add the post to the default category. Topics are not required therefore, if you forget to assign a topic to your post, WordPress will do nothing.

    2. Categories are intended to be used to organize posts. It is is your best interest not to hack WordPress into sharing the categories with other post types (pages, attachments, custom…). Custom taxonomies however can be applied across post_types allowing you to share terms.

    3. The url structure is very similar:

    Category: /category/code-snippets/
    Topic: /topic/jquery/

    In my opinion, custom taxonomies are best used to achieve a higher level of abstraction in organization than possible using categories and tags alone.

  44. Haluk December 6, 2010 at 7:13 pm

    Michael,

    I should have coined the question differently. Sorry about the use of the word “category”. Here is my second attempt asking it in a different way. This is all in an effort to understand the killer difference in between wordpress’s out of the box hierarchical taxonomy called “category” and any custom taxonomy that the user may choose to create to do the somewhat same thing.

    Here we go:

    Let’s assume that WP does NOT come with any hierarchical taxonomy. So, “Add Category” button does not appear on the dashboard.

    And when a user is in need of creating a post, WP ask him/her to create a taxonomy system to put the post in. So he comes up with a name; “Section” ( notice I deliberately pick this word for the question purposes since the word “section” is a synonym of the word “category” just to make a point that his intentions is the same in creating that particular “bucket”. ), so he picks the word “section” exactly to mean “category”. But in order to do this, he goes in the functions.php and add that register_taxonomy code along with the necessary. And, as a resolt, on the admin dashboard, he now sees the link “Add a section”. He then names the section ( the section custom taxonmy ) as “Topics” and then he starts dumping some posts. To complete our small case, let’s say
    he adds a post in regards to “David Beckham’s coming to LA”. Because he *must” classify this post into a pocket ( WP will force him to do so ), he finds himself creating some sub buckets.. One way would be to take this parth; Topics > Sports > Soccer. And for that, he creates the following sub hierarchies. Topics > Sports > Soccer. And then he puts the post in it and then tags it as “Beckham”. Then he goes on to the next post which happens to be dealing with say, “Kobe”. For that, he creates the Topics > Sports > Basketball bucket and then he tags the post under “Basketball” as “Kobe”.

    At this point, I’d like to ask maybe simple but terminology-wise important question;

    What’s the name of his main custom taxonomy?
    Is it “Section” or or is it “Topics”?

    How about the items captioned as “Sports” and “Soccer”, “Basketball”?
    Are they taxonomies too? Or are they better called “sub custom taxonomies”?
    Or should we call them as “Terms” or even better “Terms under custom taxonomy of Soccer” or perhaps, “Terms under custom taxonomy of Topics”. I’d really appreciate it if you could clarify this simple stuff first.

    With that, let me ask the main question.

    Let’s assume that he did not go for the custom taxonomy path since he thought the good old “category” approach is just perfect for what hw wants to do. This apprach is the familiar approach anyway, cause it is always there and it is the instinctive one. But, …. I’d like you to compare this with the custom taxonmy way. Functionality wise what would be the short comings with choosing one as opposed to the other?

    For that, I will make the example as close as possible to the above example. In this scenario, once he clicks the “Add a Category” link on the dashboard and he names it as “Topics”. Let’s pause for a moment here and get this out of the way? Did he created a category called “Topics” or did he create a term called “Topics” under a taxonomy which comes built in with WP as “Categories”. Believe, seeing the things in the right way makes a hell of a difference in understanding these matters. Forgive me everybody, if this level of questioning you think is not needed here. For me, it is. Going on, he a creates a sub category called “Sports” and then two siblings under the “Sports” as “Basketball” and “Soccer”. After that, he categories the Beckham post obviously under the Soccer category while tagging it as “Beckham”.

    Now, what are the key differences in these drastically two different approaches? – where the intent is obviously the same.

    If the good old built in taxonomy category approach is better than creating the custom taxonomy called “Section”, then, when do creating custom taxonomies starts yielding some advantages over the cats?

    Let’s add the Media type into the equation. Maybe that’s going to help.

    Let’s say the post about the Beckham was a video and the Kobe’s one was an article. And the site owner decides to also provide a Faceted Navigation option into his site, to capture a different mind-setted crowd from his audiuence whi may be interested in seeing his site from a Media Type point of view such as let’s see what videoes does this site has?
    The intent here is to create a “faceted navigation” without duplicating any data and harvesting the same data for different point of views. Going back to our first example, (where he created the custom taxonomy called section” ), he opts in for another one, another custom taxonomy and he names that one as “Media”. And then, he creates the 2 sub hierarchies as “Video” and “Articles” right beneath. ( He can do so because with register_taxonomy, he specified hierarchial as “TRUE” ). And while he was creating the Beckham post, he *not only* classifies it under the “Section custom taxonomy” as topics > sports > soccer *but also* classifies it as “Media” custom taxonomy as Video.

    Now let us compare/contrast this with the category way.

    He could have certainly ( and most instinctively likely ) to go with creating a category. Because in our example two above, our guy did not deal with any custom taxonomy, he had added “Topics” as a category right from the get go. With that in mind, he now finds himself adding another top level category ( right at the same level as “Topics” ) and then he names it as “Media” and then he creates two sibling sub categories beneath “Media” as “Video” and “Articles”.

    If were to compare these approaches, what do you say? They almost seem identical semantically. But WP wise, what are consequences in differences?

    I’m very sorry about this long post. I hope it will prove to be a useful one.

  45. Michael Fields December 6, 2010 at 8:03 pm

    I think what you need to understand for the first part of your question is that “category” is a taxonomy. Each “category” that you create is a term of the “category” taxonomy. If you create a new category called “baseball” it is a term of the category taxonomy. Basically a category is a taxonomy and baseball is a category.

    To be honest with you it is rather hard for me to follow the rest of your post, But I’ll do my best to respond. If I were creating a site that was essentially a sports magazine. I would first think about all of the categories that I would like to create. These might be “Interviews”, “Game Highlights” and “Bloopers”. I would then create these as categories. IMHO categories should be used to define the main organizational structure of a website. My sports site might only ever have these three categories, if I decide to add more, it is simple. Most sites that I have created have fewer than 10 categories.

    The next thing that I would do is to create a custom taxonomy named “Sport” I would then add to this taxonomy the following terms (which we can refer to simply as “sports”): basketball, soccer, baseball and football. These are the sports that I plan on writing about so there is no need to ad more.

    I would not use tags at all, this is just me though :)

    Now we have two taxonomy systems that we can use to organize our posts:

    Category
    – Interviews
    – Game Highlights
    – Bloopers

    Sport
    – basketball
    – soccer
    – baseball
    – football

    Now if I were to write a post about about how Kobe Bryant tripped over his shoelaces and did a swan dive into the cheerleaders, I would “put” the post in the “Bloopers” category and assign it to sport called “basketball”.

    At this stage I might wonder if my magazine could be organized better. It might be a good idea to create another taxonomy for “players” or better yet “athletes”. I would then add Kobe Bryant to the athletes taxonomy and associate the aforementioned post with the Kobe Bryant athlete because the post is mostly about him.

    What benefits does this have over using a complex category system with many hierarchical associations? Well, in WordPress 3.1 you will be able to query for multiple taxonomies at the same time So you could easily find all interviews with Michael Jordan as a basketball player – this would be a separate list from all interviews of Michael Jordan as a baseball player. The possibilities are only limited to your imagination and organizational skills.

  46. Haluk December 6, 2010 at 10:35 pm

    Category
    – Interviews
    – Game Highlights
    – Bloopers

    Sport
    – basketball
    – soccer
    – baseball
    – football

    In this example, if you were to create Media Type with Videos, Articles, Pod Casts, Picture Gallery etc, would you use Media Type as a seperate taxonomy ( just like Sport being a separate taxonomy ) and then Videos, Pod Casts etc as terms on Media Type

    or…

    would you create a category ( right next to Bloopers ) and add Media Type as a category and Videos, Pod Casts as Sub category? Which one is going to give you the faceted navigation?

  47. Michael Fields December 6, 2010 at 10:40 pm

    WordPress is actually doing this in version 3.1 with Post Formats which are taxonomy driven.

  48. Michael Fields December 6, 2010 at 10:48 pm

    BTW – WordPress 3.1 will not create faceted navigation for you, you must do this yourself. It has however laid the ground work to make this much, much easier than it has been in previous versions. I’m really looking forward to 3.1 :)

  49. Haluk December 7, 2010 at 3:57 am

    Thanks, as read your very well written explanations more and more, it is getting clearer. I appreciate your taking the time to respond every single comment and question. Thank you.

    I visited the sample sites you referred to in your article;
    http://popcritics.com/
    http://vitalventure.gmri.org/activities/
    and of course wordpress.tv

    Among these 3, the vitalventura ( http://vitalventure.gmri.org/activities/ ) really took the custom taxonomies to the next level by providing **filter by multiple terms/taxonomies** functionality. I don’t know how they are pulling this off though. No clue as the URL does not change..

    For example, one can visit this page ( http://vitalventure.gmri.org/activities/ ) and then check boxes titled as “Five” and “Six” from the Grade Level Taxonomy and the check box titled “A. Unifying Themes” term from the “SCIENCE & TECHNOLOGY THEMES” custom taxonomy, and as a result, you will get to see the activities filtered down by FIVE, SIX & A. UNIFYING THEMES. If one had to create a unique link ( to put it into the custom menu for example ), would that be possible to build an SEO and developer friendly query string and WP does the rest?

    Other sites, are doing it all one dimensional. Once you click on a term under any given taxonomy, you only get a vertical view of all posts that’s been tagged ( or should we say clever tagged ) by that term. and the URL is easy to figure out; you are gonna get something like http://vitalventure.gmri.org/?grade=5

    Can I custom crft a URL, so that WP automatically gives me the results of all posts from Categories Cat1 and Cat2, which are also tagged under Places ( a custom taxonomy ) as Place1 and Place2, and also been tagged under People ( yet another custom taxonmy ) as People1 and on top of all that, are also tagged ( general tag taxonomy ) as Tag1 or Tag2. Can such a URL be craftable sometihng like

    yoursite.com/?places=place1,place2&people=people1,tag=tag1,tag2,category=cat1,cat2 Or is this too much of a stretch of imagination? if so, how will WP know where to use “AND” and where to use the “OR” from the query string? How would you about something like that?

  50. Michael Fields December 7, 2010 at 5:33 am

    No worries. I’ve been meaning to take a deeper look into the new and improved taxonomy system… This has been a good kick in the pants.

    I agree, Vital Ventura is a really impressive example. It’s being pulled off via Ajax, you don’t see the url change because it is happening behind the scenes. You can install the Firebug extension for FireFox to watch the HTTP requests on pages such as this. The urls are pretty easy to create in WordPress 3.1. The following links work on this site:

    3 Bookmarks about javascript
    ?topics=javascript

    2 Bookmarks from WP Hardcore
    ?source=wp-hardcore

    1 Bookmark about javascript from WP Hardcore
    ?topics=javascript&source=wp-hardcore

    I’m pretty sure that complex queries (such as the ones you suggested) are not supported via url string. Otto has a great post about advanced taxonomy queries in 3.1. These examples work really well when used with query_posts() but fail when passed via GET.

    The following query was constructed using Otto’s tutorial and is meant to retrieve all posts about Accessibility and The Dashboard but not about Media.

    tax_query[0][taxonomy]=topics&tax_query[0][terms][]=dashboard&tax_query[0][terms][]=accessibility&tax_query[0][field]=slug&tax_query[0][operator]=IN&tax_query[1][taxonomy]=topics&tax_query[1][terms][]=media&tax_query[1][field]=slug&tax_query[1][operator]=NOT%20IN

    It will work if used inside query_posts() but will not work at all if appended to the url.

Share your thoughts

Fork me on GitHub