Some fixes and extensions for Wordpress tags such as a tag cloud using only tags found in a specific category and also tag and category intersection.

Download Plugin Now from Wordpress.org!

Version 2.3 introduces some fixes to the tag cloud, a new template tag to replace the built-in the_tags and a basic rewrite so you can change ?tdo_tag= to something more fancy like /tdo_tag/ if you have fancy permalinks turned on!

Wordpress 2.3 introduced native tagging support, which is rather nifty.

But did you know that you can display multiple tags in the one archive and even generate a feed for that?

  • http://your-blog-uri/?tag=tag1,tag2” this would get all the posts tagged with tag1 or tag2.
  • http://your-blog-uri/?tag=tag1+tag2” this would get all the posts tagged with tag1 and tag2
  • http://your-blog-uri/?tag=tag1,tag2&feed=rss” this would get you an RSS feed for all the posts tagged with tag1 or tag2

Neat huh? But did you notice that on the generated tag page you see only one tag listed in the header? This function fixes that and displays all tags used to generate that tag archive. It does this by silently modifying the single_tag_title template tag. It’ll even work on the RSS feed generated by that page!

What would be also be cool is to be able to intersect categories and tags so you could grab posts with tags from a specific category for example?

With this plugin you can. It’s not perfect however. It only allows intersection between a single category and one or more tags. Technically Wordpress should be able to support multiple categories and tags intersections but it didn’t work for me in Wordpress 2.3.x and 2.5.

So go to one of your category pages. If your using using fancy permalinks then at the end of the url add “?tdo_tag=a_tag“. If your not using permalinks then you can just use “&tdo_tag=a_tag“. You must use the tag slug, not the full tag name. You can use multiple tags as above using “,” and “+”.

  • Example not using fancy permalinks: “http://your-blog-uri/?cat=35&tdo_tag=tag1,tag2” this would get all posts in category with id 35 and tagged with either tag1 or tag2.
  • Example using fancy permalinks: “http://your-blog-uri/category/mycategory/?tdo_tag=tag1+tag2” this would get all posts in the category “mycategory” and tagged with both tag1 and tag2.

This plugin uses this intersection code to automatically modify the built-in tag cloud template tag wp_tag_cloud so that if it is used on a category archive, it shows only the tags within that category. You can then click on a tag in that tag cloud and it will get the posts for in that category that tagged with that tag. (You can disable this and just use the specific template as you need).

Installation

Download the zip and extract the files to a subdirectory, called tdo-tag-fixes, of your plugin directory. i.e. /path_to_wordpress/wp-content/plugins/tdo-tag-fixes.

Once you’ve got it installed, active the plugin via the usual Wordpress plugin menu.

Configuring

To configure the plugin, you must open up tdotf.php in your favourite text editor and look for these lines:


// You can change this if you want. Do not set it to 'tag'. If you want to
// disable this feature, just comment it out.
//
$tdotf_tag_get_var = 'tdo_tag';// If you have fancy permalinks turned on, you can use this option to use a
// more fancy form of the tdo_tag. The first paramater is the category_slug
// and the second parameter is the tag_slug. If you want to disable this feature
// just comment it out. (It depends on $tdotf_tag_get_var)
//
$tdotf_fancy_tag_regex = 'tdo_cat/(.+)/tdo_tag/(.+)';// Set to false if you do not wish tag archive titles to be correctly updated
//
$tdotf_fix_tag_title_auto = true;// Set to false if you do not wish the built-in tag cloud automatically fixed
//
$tdotf_fix_tag_cloud_auto = true;// Set to false if you do not wish the category archive title to include tag filter
//
$tdotf_fix_cat_title_auto = true;