Ultimate Tag Warrior Updates

Latest Version :

Things Worth Knowing About Since The Last Version

  • If there are database permission issues that prevent the auto-updater from running, you won’t see error messages all over the place (but if you do a force-reinstall they will display)
  • Related posts are sorted by most tags in common, then most recent first (previously it was just most tags in common order)
  • Tag urls are now url-encoded (duh.) – this allows using umlats and other such things (at least in the way I tried (; including ü in your tags works, using magical characters directly is a bit bung still)
  • Lists of posts can now include the date of the post (uses the %postdate% formatting placeholder, and the default date format)
  • UTW_Show functions have changed a little – the first parameter still takes the name of a predefined format; but if you pass in custom formatting information, it will be added to the predefined format.
  • The Options > Tags page has a whole bunch of embedded help. Yay help.
  • The automatically included links can now be placed either before or after the content. There’s also the option to add text before and after the tags (handy for Tag: labels, wrapping tags in spans or divs and wrapping html lists in <ul> tags)
  • I’ve fixed an odd bug with feeds (it worked for me, but didn’t for a couple of people.. it’s just one of those bugs, I guess)
  • [Wordpress 2 only] On the write post screen, the tag entry and tag suggestion boxes have been shuffled into the right-hand column and put into magical boxes for shuffling and hiding and whatnot.
  • There’s a new template function, UTW_ShowRSSFeedIcon(). It displays an RSS icon on tag pages for the current tag set (if you’re viewing /tags/tag1 it’s a link to the tag1 feed. On /tags/tag1+tag2 it’s a link to the feed with posts tagged both tag1 and tag2).
  • The UTW_AddTagToCurrentPost() has an extra parameter – it allows specifying the minimum user level that you need in order to add tags. It defaults to 3.
  • 2.8.6->2.8.7

  • Plugin now works with the wordpress 1.6 alpha version


  • Tagyu now tries to use CURL to get related tags
  • Ajax driven embedded tag-adders will now accept a comma separated list of tags, instead of being limited to a single tag
  • There’s time sensitive tag lists! (You can put a tag list in your archives that includes the most popular tags for the month being viewed)


  • Fixed the bug with updating the database *fingers crossed*
  • Changed the way that requests to tagyu are sent, which will hopefully work for people whose servers wouldn’t allow them to use the old way.


  • Bug fixes
  • There’s now the option to link tags to gada.be and Zniff
  • The administration has been split in two! There’s now an options page, where options are; and a manage page, where tags can be manipulated.
  • There are a bunch of new options – you can choose how to format the automagially included links, and you can choose which icons to display in icon-based formats


  • Tag suggestions now come from tagyu.com
  • There’s a new predefined format, weightedlongtailvertical
  • There are new custom format bits – %tagrelweightrank%, %tagrelweightrankint%, %tagrelweightrankcolor% and %tagrelweightrankfontsize%


  • The documentation is up to date!
  • (yeah. that’s mostly it.. there are a few bug fixes; but this release is mostly for the completed documentation. May it never get so horribly out of date again.)


  • Fixes the bug where an error was displaying in the tag box for new posts
  • Automagically included Technorati and local tags are now wrapped in tags. Technorati tags use the CSS class named “technoratitags” and local tags use the CSS class “localtags”
  • You can view the union of tags! If you go to /tags/tag1|tag2|…|tagn then the tag page will display the union of those tags. At this stage, you can have either a tag intersection or a tag union; you can’t mix the operators up.
  • There’s a new formatting string, “andcommalist” that will display a comma list of tags, along with a link to the intersection page (when appropriate – either from viewing a tag page with a single tag, or viewing the tag page for an intersection of tags)
  • There are also new custom formatting placeholders:
    • %intersectionurl% that displays the url for the current set of tags and the tag being rendered.
    • %unionurl% that displays the url for the current union of tags, along with the tag being rendered.
    • %intersectionicon% that displays the intersection url with a little icon (intersection icon).
    • %unionicon% that displays the union url with a little icon (union icon).
    • %intersectionlink% that displays the intersection url as a link, with a + as the link text
    • %unionlink% that displays the union url as a link, with a | as the link text


  • It’s getting closer to really-really having spaces in tags: tags are now a comma separated list, and any tags with spaces will automagically have spaces turned into underscores
  • Tags can have synonyms. Synonyms behave kinda like aliases to a tag, so if you have a blogging tag; you could set up blogs and blog as synonyms, and any requests for tag-based pages for the synonym will retrieve the tag-based page for the underlying tag. Synonyms are handled on the Manage>Tags page (This is much cooler than it sounds; and I have grand plans to follow!)


  • I fixed the bug with related tags (When I switched to alpha sorting, I put the order clause in the wrong place)
  • There’s a new template tag, UTW_AddTagToCurrentPost($format=”"). It puts an ajax-enabled box on posts. If format is empty, then once the tag has been added nothing will happen. Otherwise, the new list of tags rendered using the named format specified will replace the contents of the page element named “tags-{post id}”.
  • “iconlist” is a new named format that displays tags along with Technorati, Flickr, Del.icio.us, Wikipedia and RSS icons (and if viewing from a tag page, an intersection icon that links to the intersection of the current tag(s) and the tag being rendered)
  • “commalisticons” is a new named format that displays tags with the icons; with each tag separated by a space.
  • “htmllisticons” is a new named format that displays an html list, with icons first then the tag
  • %icons% is a new placeholder for custom formats. It includes the list of icons as above.
  • %intersectionicon% is a new placeholder for custom formats that displays the intersection icon, and links to the intersection of the current tag set and the current tag. If the current tag set is empty, then nothing will display.


  • The list of tags for a post/related tag lists are now sorted alphabetically (instead of just however they were falling out of the database)
  • There’s a new template function for inside the wordpress loop: UTW_HasTags() which returns true when the current post has tags, and false otherwise
  • The include path is being set explicitly, as per this request


  • The Tag Suggestion bit will look for any tags related to the set of keywords Yahoo! returns, and include those in the list of suggestions.
  • There is a Force Reinstall button on the Manage – Tags page that will attempt to re-run all of the updates.
  • Custom formats can now have a “single” format, which is used when there is only one matching item.


  • Adds Yahoo! keyword suggestions to the post editing page


  • More bugfixes: no longer shows all posts on the tag page (this is fairly important)
  • Fixed a buglet with RSS feeds and tag.php files not playing nice together
  • The javascript tag for the ajax bits ought to be XHTML compliant, now


  • Just a bugfix for -1 limits


  • There are RSS feeds for tags (and sets of tags) –
  • Tag pages are paginated
  • The plugin is localised-ish (I’m not sure if I’ve gotten everything, though.. lemme know if I missed anything!)
  • The alphabetical weighted lists now display the top x items in alphabetical order instead of just the first x alphabetically
  • You can now specify the maximum number of things to get using the UTW_ShowSomething() functions
  • The javascript for the Ajax bits now live in an external file
  • The bug where tags were being eaten when you shrunk the icons has been fixed
  • I’ve fixed the Flickr tag link url. I really, really mean it this time
  • I renamed the ID column of the tags table to tag_id; so if you see any SQL errors, let me know!


  • Technorati, Flickr and Wikipedia urls now have tag URL’s of the form that the service expects (like+this, likethis and like_this respectively)
  • There’s a “superajaxrelated” format for using with related links lists. It’ll do the expandy thing, and has a + button which will add the tag to a post (instead of the – button for a normal list)
  • Running the install page is a thing of the past! It’ll automatically update any settings when you copy in a newer version of the plugin
  • Flagged the tag cache! turns out it’s good enough without bothering about making one of these (:

2.5.5 -> 2.6

  • Buzzword compliance update!
  • Introduced ajax bits – if you have a tag list that uses the “superajax” format magic will happen! Clicking on the » will display icon-links to Technorati, del.icio.us, Flickr and Wikipedia; then clicking on « will hide them again. If you’re logged in, and have a user level over 3; you can add and delete tags from the main page instead of going to the edit screen.

2.5.4 -> 2.5.5

  • Fixed the bug in RSS feeds
  • Tags assigned to private/draft/unpublished posts no longer display in tag clouds
  • Updated the docs to reflect the slightly different install for version 1.5 of WordPress

2.5.3 -> 2.5.4

  • Documentation has been updated to take out the step where the tag.php file is copied to themes
  • The minimum and maximum font sizes can be specified for tag clouds
  • There’s now a little bit of magic for related posts
  • “Technorati Tags: ” no longer displays when there are no tags, when they’re included automagically

2.5.2 -> 2.5.3

  • Fixed the bug where if you’re using the index.php template instead of a tag.php template; the not found message + search box were displaying at the bottom of the page
  • There’s nifty support for importing tags from custom fields
  • And in the interests of fairness, there’s a way to export tags back to a custom field as well d:
  • There’s a new named format, coloredsizedtagcloudwithcount that displays a colour/size tag cloud with the number of times each tag is used.

2.5.1 -> 2.5.2

  • Go to http://yoursite/wp-content/UltimateTagWarrior/ultimate-tag-warrior-install.php – there are shiny new settings that the install will set up for you
  • The colours of the tag cloud / linear weighted graph thingers are set-able – you can set the colours at the high and low ends, and the in-between colours are generated from there. Lemme know how this works: black to white seems to work okay, and red to blue involved all sorts of purples, but I’m not sure how well it works in general (:
  • Your themes don’t need a tag.php file anymore(!). If your theme has a tag.php file, it’ll use it for displaying a tag; otherwise, it will automagically fall back to the index.php file.
  • Absolute url’s now use the ‘home’ option instead of ‘siteurl’
  • You can now specify always displaying the links to existing tags on the edit page; instead of switching to a dropdown when there are “lots” of tags.
  • (I fixed the silly bug in the delete-post action)

2.5 -> 2.5.1

  • Mark helped me fix the buggy bits around $posts
  • The list of tags on the post editing screen will display as a dropdown list once you hit 50 tags
  • You might find that your tag urls revert to http://somesite/index.php?tag=tag urls. Go to the tag management page, and switch the pretty urls option on to get your rewritten urls back.

Feature Set :

  • Rockin’ administration interface
    • Delete, rename and split tags
    • Perform a mass import from categories to tags
    • Easy to use interface for making configuration changes
  • Multiword tags (sorta – tags have underscores or hyphens; but display with spaces, and link without)
  • Lazy tag addition – the tags which are currently in use are displayed on the edit screen, and can be clicked to be added to the set of tags for a post
  • Tag intersections – /tag/tag1+tag2 retrieves the intersection of tag1 and tag2
  • Technorati support – tag links conform to the format Technorati expects, and are also included in atom feeds
  • Allows custom formatting with a profound level of control
  • Long tail curve. Oh baby. Throw your tag cloud out and take this for a spin. Displays a histogram of tags that, depending on your tagging behaviour, is a long tail curve.
  • Linear.. uh.. weighted.. uh.. thing. If you tend to use fewer tags, this is a graphical way of displaying them which is a little more interesting than a stubby long tail curve – it’s a wide bar, that displays popular tags wide and unpopular tags narrow.
  • Tag Clouds – automatically displays popular tags big, dark or both depending on the formatting option chosen.
  • Uses a Toxi-esque database schema (pretty sweet for intersections; not too bad for unions; just not great for inserts d; )
  • Has a formatting mechanism that will make your eyes bleed. Sorta. If I can draw histograms within its confines, that’s got to count for something
  • Wrappers around core functionality, so you don’t need to even consider the existence of the formatting mechanism unless you’re doing something pretty out there
  • Local cosmos works out of the box; but rewritten urls allow choosing the location of the tag cosmos, and can update the .htaccess file automatically by updating permalinks through the wordpress admin [2.5.1]
  • Can import tags from a custom field; and export tags to a custom field [2.5.3]
  • Can display a set of related posts, based on tags [2.5.4]
  • Can add and remove tags with the power of ajax [2.6]
  • Can magic-clicky to get links out to other tag-savvy sites [2.6]
  • Tag pages are paginated [2.7]
  • There are RSS feeds for both tags, and sets of tags [2.7]
  • In theory, it’s localised… There just aren’t any other languages for it yet [2.7]
  • It can make suggestions for tags using the Yahoo! content analysis webservice [2.7.4]
  • It allows tags to have synonyms [2.8]
  • It can display both tag intersections and tag unions [2.8.1]
  • And.. uh.. other things. Yeah. Other things.

To do :

  • Fix bugs which depend on WordPress 1.6
  • Implement features that depend on WordPress 1.6
  • Make a cleverer related tags thing (Current #4)
  • Write a thing for guessing appropriate tags as you type (Current #3)
  • Build a tag cache to avoid beating up on the database quite as much (Current #1)
  • Make the graphs more configurable(Current #2.75)
  • Allow assigning weights to tags
  • More clever ajax stuff
  • [your pony request here]

Download : Ultimate Tag Warrior, for WordPress 2.0 | Ultimate Tag Warrior, for WordPress 1.5
Older: 2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.5.5, 2.6, 2.6.2, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.8, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.8.5, 2.8.6, 2.8.7, 2.8.8

Drop these into the Ultimate Tag Warrior folder, in your plugins folder to expand tagging functionality in curious ways that don’t quite belong in the plugin.

Tag Archive – Displays a tag archive. Resurrected from UTW1ish. Has one function: UTW_TagArchive ($limit = 20, $postlimit=20). $limit is the number of tags to get, $postlimit is the number of posts to get for each tag. Everything is wrapped in div’s for easier styling – each tag is in a div with the ‘tagarchive’ css class; tag titles are in a ‘tagarchivename’ div; the posts are in a ‘tagarchiveposts’ div.

284 thoughts on “Ultimate Tag Warrior Updates

  1. Awesome! Everything looking really great.

    Although, I always seem to get “No tags” for ShowRelatedTagsForCurrentPost. However, if I view the same set of tags using tags.php, I _do_ get a valid set of related tags. For example, check out http://floatingsun.net/blog/2005/07/15/forrest-pmc/ (See where it says Related Tags: No tags?) and http://floatingsun.net/blog/tags/forrest (hmm… I noticed just now that getting tags for forrest+apache also yields no related tags, so probably it is working correct…)

    In any case, fabulous work. You might want to make the min/max size and the start/end color for the sized/colored tag clouds configurable.

    You rock!

  2. Diwaker,

    From what you’re saying, I think the related tags thing is working the way I wrote it – it looks at the tags for the current post (or tag page); gets the posts that match *all* of the tags; and outputs any tags which don’t already belong to the current post (or tag page). It doesn’t seem like too outlandish a way of figuring it out (although if you look at the photography tag page here; the related tags thing looks a little silly (; ). I have a feeling that this is the del.icio.us way of figuring it out, now that I think about it.

    Picking colours and sizes is definately on the horizon (: I just wanted to get the tag cloud/tag graph stuff working before thinking too hard about the finer configuration details.

    – Christine

  3. The best tags plugin I’ve seen so far. But I’m having one problem. My tag links all just go right back to my homepage. I’m not sure how to make them link to a page with just the posts that have the same tag. What am I doing wrong?

  4. Also, I recomend you make a css file or put the options in the admin panel because I will have to dig around to get the colors right since I use a black background and can’t used the colorized list.

  5. Terrance,
    Hmm.. In the admin system, have you gone to the Options > Permalinks page, and clicked the “Update Permalinks” button? (there might be a block of text there instead, in which case, try adding that to your .htaccess file)

    I’ll add the tag archive thing to my todo list (it’s such a bizarre thing; I’m suprised that anyone uses it (; )

    And yeah. Adding more settings for the new tag cloud/tag graph is on the horizon – there are many, many things to potentially change with those; and I’m.. well.. lazy d:

  6. Thanks. Your not nearly as lazy as some plugin creators.

    I have used your tag plugin for a month now and you have really out done yourself on the new version. Such great progress.

  7. Dan,

    Hee. Maybe I need to aspire to new heights of laziness (;

    (Uh.. once I clear out the todo list, of course (: )

    I must say, even I am pretty pleased with the huge leaps that this version made. I could have probably released versions 2.1 and 2.2 during the day on Saturday; but I figured I should just wait until I ran out of day before doing it (; (Hence the giant leap from 2.0 to 2.5)

  8. Excellent plugin! It looks even nicer under the hood.

    I was talking to Dave and he wanted the “Existing tags” list on the post screen to be a drop-down menu. Apparently he has over 200 tags, and it is hopelessly cluttered. I changed $format and the $utw->ShowPopularTags() call to do that, and you can see those changes here. The first line changed is line 291 on ultimate-tag-warrior-actions.php

  9. Mark,

    Version one-ish of the plugin was getting to be a scary, scary beast… splitting it off into a pile of files goes a long way to making it easier to wrangle (: (And the stuff in the core makes sooo much other stuff easier to do. The formatting stuff makes me pleased (: )

    I know what ya mean about the tag selector.. I’ve probably got 150+ tags, and it’s.. interesting to try and find tags. What I’ve done for the next release (check back in an hour (; ), is if you’ve got 50 tags or fewer, it displays the big ol’ pile of links; and if you’ve got more than that, it displays the dropdown list. I figure that if you use a small set of links, having them all out there for perusing is still a useful thing; and if you have baskillions, the start-typing-let-the-dropdown-list-find-it approach is a good one.

  10. Christine,

    You’re amazingly fast! While you’re in bugfixing mode, I have another for you:

    in the FormatTag() method…

    $siteurl = get_option('siteurl');

    should be:

    $siteurl = get_option('home');

    …in order to support people who have WordPress installed in a subdirectory. Would you rather I file bugs on wp-plugins.org ?

  11. Mark,

    It just seems fast (: I’m heading to bed fairly soon, so there’ll be silence for 10-odd hours; followed by another 8 of odd replies to blog comments while I’m at work… Then, yes then, I’ll be getting back into the poking and prodding (:

    As for siteurl vs. home.. I blame wordpress for having two options which look the same (: [Somewhere along the way, someone with a non-root install of wordpress told me to use siteurl.. I was only following orders, etc. etc.] *yawn*.. *stretch*…. tomorrow for this one.

    (Bugs here is A-OK… I’m much more likely to see them here than there.)

  12. Love the plugin, just started using it last night. I was having problems with the permalinks not routing properly and the requested links showing all posts… but updated to 2.5.1 today and it fixed everything before I had a chance to ask about it!
    You’re great, keep up the good work 😉

  13. Pingback: icebound flame
  14. You’ve probably heard about this already. I’m running the latest SVN of WordPress, and suddenly I’m seeing this:

    WordPress database error: [Unknown column ‘Object’ in ‘on clause’]
    select t.tag from wp_tags t inner join wp_post2tag p2t on t.id = p2t.tag_id and p2t.post_id=Object

    Any thoughts?

  15. hmm… that got fixed by using $post_ID instead of $post. but now my /tag permalinks don’t work anymore. damn upgrade!!!

  16. Short Answer: Don’t use the scary 1.6 alpha version of wordpress with Ultimate Tag Warrior (:

    (Sidenote: Gah! not looking forward to the ominous wrangling that this seems to indicate I might end up going through.)

  17. Hiya Christine,
    Just in case anyone else has this problem. I couldn’t get tag intersections (/tag/keyword1+keyword2) to work with 2.5.0. It always showed no posts; even though the intersection should produce some results.

    Upgrading to 2.5.1 fixes that. $posts wasn’t being populated (in ultimate_get_posts())

    I want colour in mah tag clouds. pretty please?

  18. (Gah! ah well. As long as it works now (: )

    You want colours? Geeze, Whatever I do, it’s never enough (;

    It’s right near the very top of my list; so if all goes according to plan (hur-hur-hur.. Famous last words), you’ll get your steenking colours in the next couple of hours (:

  19. Gah! Turns out that I’m dumb when it comes to writing a thing for figuring out intermediate colours (and all of a sudden, I remember why I wrote it in B&W to start with)

    I’m all out of thinking; so the colour thing is gunna-hafta wait until tomorrow.

    Sorry about that d:

  20. Hi Christine,

    When I try to delete a *page* (_not_ a post), I get this:
    Fatal error: Call to undefined function: deleteposttags() in /www/d/diwakergupta/htdocs/blog/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 261

    Again, this is the latest SVN

    I’ll send you a patch if I fix it before you can get to it 🙂

  21. Oh bother (:

    Should be a call to DeleteTags($postID)

    (Probably I’ll fix this by adding the other function name… since it obviously makes more sense (or at least it fits the naming scheme a little better))

  22. Excellent plugin!
    Just a note: the default color for Least popular tags should be black (#000000) as it may seem to the common user that the plugin isn’t working (because the tags are written in white text over white background);

    Just a question: how to customize the tags appearance? Its css/layout and the place where the post tags appear?


  23. Whee. It works a treat. I gave the colours a bit of a workout (the combo I settled on is here). Well, I like purple, Mmmkay ?.

    and in a quite shocking display of mind reading, you’ve fixed the “always use permalinks for tags” problem that I was just going to whine about… 🙂

    This is pretty phenomenal stuff, Christine. I can’t wait to see what’s in store next 🙂

  24. Vitor,

    I went with black for the most popular, because it’s darker; and I guess dark ~= important, sorta.. a little.. around the edges.. (: It’s hard to pick out default colours, since sometimes there are black backgrounds.. other times white backgrounds..

    Ooh. And as for customising the tag cloud; you can use the colours on the config page to specify the colour range, and it auto-figures out the colours from that (if you use one of the formats with colours). For sizes, it assigns a font size of 250% for the most popular tag, down to 70% for tags which are used least often. If you wrap the tag cloud in a div or whatever, you can effectively adjust the font size that way; ditto the other font properties.


    There’s nothing wrong with purple (: (Oh how I miss those days..) As for what’s next… There’s the stuff in the todo list.. some of which is more likely than others.. “write a thing for guessing tags as you type” seems a lot like voodoo, so it’ll be interesting to see if that ever happens. And novel and interesting things that might spontaneously happen without appearing on the todo list (;

  25. I love each version more than the last!

    The colors in the tage cloud will take some configuration for each users site and taste, but it works perfectly. Thanks for adding the option to have all the links on the post page 🙂

  26. Is it possible to control the size of the font from the admin panel? I’m having trouble setting a font that looks good in Safari, Camino, etc.

    I wrap in a div, but it might be nice to control that from the plugin too.

  27. Great plugin – thanks so much for writing it. I have a couple of questions (as if you aren’t busy enough! (: ) that I’m having trouble figuring out.

    1. Does “Automatically include local tag links” and “Au… Technorati tag links” both need to be set to Yes in order for the tagging system to work/mod_rewrite (i.e. .com/tag/mytaghere) or does this only control whether the tags are output at the bottom of each post?

    2. If they are set to Yes – how do you control how they look? I read through the help file and grasped the formattype, function stuff for adding in my own look but I can’t for the life of me figure out how to change the appearance of the ones that appear when Yes is turned on for the “Automati…local & Technorati tag links” questions.

    3. When utilizing a tagged URI (i.e. domain.com/tag/mytaghere), I get a proper response – either 404 or the post(s) that contain the tag. But strangely, I also get the 404 “Not Found – sorry, but…” with the search bar (this is with stock Kubrick theme) completely underneath the footer, every single time no matter what. [ http://tinyurl.com/97nqr ] should show you what I’m talking about. Any ideas on why that is happening and what I can do to fix it?

    Thanks again for a wonderful plugin!


  28. Jacob,

    1. Yes! (Which is to say, it only controls whether links are included at the end of your post automagically).

    2. Hmm.. at the moment, those two default to just displaying a comma seperated list; but you raise an excellent point! I’ll make this controllable real-soon-now. If you want to be able to change the way these look right now, could wedge calls to UTW_ShowPostTags() into the template, and turn auto-inclusion off.

    3. I’ll have to look into that one (: I’ll let you know when I figure something out.

  29. Jacob,

    Luckilly, 3. is just me making a retarded mistake; rather than something completely bizzaro…

    It’ll be fixed in the next release; but if you want to fix it now, take out line 267 of ultimate-tag-warrior-actions.php

    (It says “include(TEMPLATEPATH . ‘/index.php’);”)

  30. Sweety,

    I just love smart, geeky girls that can code up some php, and write things like “Build a tag cache to avoid beating up on the database quite as much” on their blog.

    Sexy !

  31. Christine,

    Thanks so much for the help – you’re the best! Worked like a charm.


  32. Hey Lady,

    Can I get this working on WP 1.5 ?
    Just plain ole 1.5, not 1.5.1.

    Should I roll back to a previous version of UTW ?

    I’m gonna upgrade eventually, but I’m a goober and have too many hack-a-doodles in my current install.


  33. Jim,

    I’ll probably go with pt sizes, just because. As for the tag cloud display… I don’t think I changed anything that would impact that; but I’ll have a closer look.

    Mister e-head,

    1.5 is a tricky one – I don’t know that any of the earlier versions work with it (Somewhere around UTW1ish, someone ran into the problem with 1.5); but since you’re so charming, I’ll have a look into it (:

    (Upgrading from 1.2ish to 1.5 is what prompted the beginnings of this plugin (; In the beginning, it was hacked and patched into my old install.. I know exactly what you mean (: )

  34. Mister e-head,

    I’ve had a little play; and it looks like the current version will work with wordpress 1.5 if you put all of the files directly into wp-content/plugins, instead of in the UltimateTagWarrior folder.

  35. Jim,

    I’m not quite sure what you’re seeing, with the tag cloud issue – what are the two colours that you’ve specified on the config page, and what are you expecting to see?

  36. Oh I am looking forward to getting this working – but problems installing it! I’m reading the html help file included with the zip file listed above (http://www.neato.co.nz/plugins/ultimate-tag-warrior-2-5-3.zip), but there is no tag.php file (see step no.2 –
    Copy themes/default/tag.php file into the default theme folder and your current theme folder).

    So – what am I missing?

    Sorry if it’s something obvious.

  37. Hey, C, your plugin rules all! The only thing is that if you select automatically display Technorati tags and there aren’t any tags associated with the post, then it just says “Technorati Tags:” Could we make that not show up if post doesn’t have tags?


  38. Gez,

    Whoops! I need to take that out of the documentation. You don’t need a tag.php anymore (But if you want to display the tag page differently, you can make one (: ).


    Yep… next release (:

  39. C, also for next release, it might be nice if when one chooses to automatically display tags list, for a “Tagged as:” or some such label to appear in front of it. Also, if one automatically adds the tags and the Technorati tags list, there is no line break for the TT. Thanks for your quick responses.

    P.S. Why not enter tags as separated with some other punctuation rather than space? I would prefer it were some less frequently used punc. such as | or ] so that tags with commas could be used. So, if I want to tag my post as “Books|The Lion, the Witch, and the Wardrobe|C.S. Lewis” I could do so without fear of screwing up my tags. I|think|the|pipe|would|work|splendidly.

  40. OK, C, hopefully this will be the last thing I bug you about. Any idea if it would be possible to do a vertical weightedlinebar or weightedlongtail for displaying in a sidebar?

  41. OK, even if this isn’t the last thing, I am not going to post another comment! There is some talk in the documentation about linking to different places such as Flickr, wikipedia, etc. Would there be a way to associate different sites with different keywords or to allow the visitor to choose where they want the link to go? Perhaps a drop-down list or javascript popup or something like that? Oooh… I like that popup idea. A little dialogue that says, “You’re searching for “Tag.” Where would you like to find it?” That would be awesum!!!

  42. Jamie,


    68: I hum, and I har, and I ponder.. The automagical inclusion of tags was written as a simple way to get tags onto pages without needing to alter themes or any of that nonsense. I was going to make changing the format an option on the manage tags page; but that seemed.. kinda complex. [Although, making a thing for easily creating formats sounds like a great idea for version 6 million!]. If I can think of a fairly straightforward way (on the interface side) of doing it, I will (:

    The delimiter thing keeps popping up (; I really should implement it.

    69: Yes (: But not with the pre-specified formats that are there. (In the process of making the two formats, I ended up with a vertical version of the weighted line bar; and the long tail graph is actually easier to display vertically. I’ll see about putting these into the list of formats once I figure out what I did (; )

    70: Eventually (: I’m thinking of making a thinger for displaying the list of tags as a list, with little icons to each of the other tag-savy sites; but having some form of popup would work too (:

  43. Well, then here’s looking forward to version 6,000,000!!

    Thanks a lot for your quick responses~! The delimiter thing I think is a necessity.

    Your plug still rules all.

  44. I think that another really cool thing would be to automagically hyperlink words that happen to be tags on your blog in posts. I guess one could do it with PHPGiggle (whose site is down right now), but I like having stuff all neatly bundled together.

  45. Jamie,

    I have considered that in the past; but decided that it was probably a bit too time consuming to do the matching every time a post displays.

    (As an alternative, though; I have pondered the possibility of allowing inline <tag> tags and turning those into tag links.)

    Will see (:

  46. If I post an entry as private, the tag still shows up. I’m hoping to use a couple tags (for my own personal reference) that nobody will see in the weighted listing. Is this possible? And if it’s too hard to add to the plugin, is there a way that I can manually not include a couple tags?

  47. Jenna,

    Hmm… The answer is… I should be able to get it to exclude tags on private posts (although secret tags is an interesting idea that I might persue at a later stage.. (: )

    Now that I look at it, it looks like it’s including tags for non-published stuff as well (whoops!)

  48. Hello Christine,

    great work on that plugin! Since english is not my native language, i have problems figuring out, how to create a page that shows all my tags in a fancy cloud or post some tags in a cloud in the sidebar…

  49. Ralph,

    There isn’t a straight-forward way to have a page with just a tag cloud (at the moment! It seems like a useful thing, so I’ll add it in soon), but to put it in your sidebar, open the sidebar.php file for your theme; and where you want to display the tag cloud put

    <?php UTW_ShowWeightedTagSet(“coloredsizedtagcloud”) ?>

    (with the “‘s turned into normal “‘s instead of the pretty “‘s)

    Hope this helps!

    If you have other questions, just ask, and I’ll see what I can do to help you out.

  50. Thanks for the info…

    Since i’m new to wordpress as well, how could i implement that in a page on its own and call it eg. “Tags”?

  51. Ralph,

    A page for all tags is a bit tricky, but here goes… Create a file in your theme called tag_all.php and put the header/footer/sidebar into it, along with a tag cloud and anything else you want to include. Then, either include a link to /wordpress/index.php?archive=tag or add an entry to your .htaccess file to rewrite a pretty url to point at index.php?archive=tag.

    (I’ll probably build in the automagic for doing this in a later version..)

    for alphabetical.



    I’ll look into fixing that soon. Thanks for finding it for me (:

  52. “Then, either include a link to /wordpress/index.php?archive=tag or add an entry to your .htaccess file to rewrite a pretty url to point at index.php?archive=tag.”

    Could you please explain that part in a little more detail? I was able to follow the steps until here, but now i’m stuck. Do you perhaps mean archive=tag_all? With archive=tag, i pressume you redirect from archive to the tag page…

  53. Ralph,

    I’ve forgetten what the .htaccess entry is supposed to look like d: (But it definately should point towards archive=tag, not archive=tag_all – the Ultimate Tag Warrior code is looking for archive=tag)

  54. Nat,

    I think so.. (:

    There’s a bit that will import values from a meta-field-thinger; which I *think* is how bunnys’ plugin stores the tags. (On the Manage Tags page, near the bottom, there’s a thing for importing tags where you tell it the name of the field and the delimiter. I’m not sure what the name of the field is for that plugin, though.)

  55. I tried installing this and I just got 404 errors when entering the base URL… I have updated my .htaccess but when I try to change the options or enter the base URL I get a 404 (it seems to like WP installed on the root) and none of the options save.

  56. Joel,

    Ooh. Weird.

    Are you using WordPress 1.5?

    (In which case, copy the plugin files into the wp-content/plugins folder instead of the UltimateTagWarrior sub-folder)

  57. Christine – I removed the table in my DB and removed the files and tried installing as you suggested (by placing the files directly in the plug-ing folder) but then when I tried to run the install script I got errors and no tables were created. I think I am too stupid for this plugin.

  58. (Shhh!!! You’ll scare people off! (; )

    What were the errors you got?

    (If it was a 404, file not found; that’s okay! you need to go to /wp-content/plugins/ultimate-tag-warrior-install.php instead of /wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-install.php)

  59. I am running the install file from the plugin folder but I am getting errors:

    Warning: main(../../../wp-blog-header.php): failed to open stream: No such file or directory in /home/***/public_html/wp/wp-content/plugins/ultimate-tag-warrior-install.php on line 2

    Fatal error: main(): Failed opening required ‘../../../wp-blog-header.php’ (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/***/public_html/wp/wp-content/plugins/ultimate-tag-warrior-install.php on line 2

  60. Christine thanks for all your help! I replaced the line in the install file and now I have a new error:

    Parse error: parse error, unexpected ‘.’ in /home/joelbla/public_html/wp/wp-content/plugins/ultimate-tag-warrior-install.php on line 2

  61. While I don’t see where it would have been very difficult to add the functionality, I’m glad to see the related posts thinger added. That means I have one less plugin to worry about and less tags/keywords to enter into my posts. Are you aiming to take over WP?! You’re well on your way!


  62. C, could you please explain the bit about formatting, the bits with %****%? I’m not sure I understand the functionality that you have included there or how to put it to use.


  63. Jamie,

    The related posts thinger was one of the obvious sorts of things to do with the tags that kept on getting missed (; (And yeah, it was really easy to do in version 2ish of the plugin.. would have been more of a pain in version 1ish. I knew there was a reason for restructuring it (: )

    With the formatting stuff; you can make a formatting string (or array of formatting strings), are a combination of html tags and %..% markers. You can then use the formatting bit by using UTW_ShowSomething(“”, {your custom format})

    If you want everything in the list to look the same, you can go UTW_ShowSomething(“”,”%whatever% “) and it’d show whatever whatever was for each matching tag.

    If you want to have different formatting for the first or last item; then you need an array of formatting items; so you’d go UTW_ShowSomething(“”, array(“default”=>”%whatever% “, “first”=>”Whatevers: %whatever% “, “last”=>”%whatever%.”))

    first, is the format for the first item; last, is the format for the last item; default is the format for everything in between (and if there isn’t a specific format for the first or last item, the default will be used there too.)

    The formatting stuff is kinda weird (:

  64. Christine, it’s me again.

    “Introduced ajax bits – if you have a tag list that uses the “superajax” format magic will happen! Clicking on the » will display icon-links to Technorati, del.icio.us, Flickr and Wikipedia; then clicking on « will hide them again.” – how can this be done? I just downloaded 2.6 but you didn’t change anything in the help file – it’s still 2.5.

    Could i somehow show my tags like this: tagname |img technorati|img flickr|img del.icio.us| where the images represent the URIs to the according services?

    Thanx for your help and patience…

  65. Hiya Ralph,

    In your theme, if you change the tag display bit for a post to be <?php UTW_ShowTagsForCurrentPost(”superajax”) ?> then the «/» should start working. If you’re after something which always displays the icons (not so much with the expanding and contracting); you can use <?php UTW_ShowTagsForCurrentPost(“”, “%taglink% %technoratiicon%%flickricon%%deliciousicon% “) ?>

  66. Thank you for the prompt answer, but i have some problems:

    The image adress is a folder called “UltmateTagWarrior” – but my installation folder is “ultimate-tag-warrior”. Now if i simply rename the folder, none of the functions works anymore… maybe you want to take a look at my blog…

  67. Maybe i should add that my installation path is TLD/wordpress, while the blog address is TLD (i moved and edited index.php of WP)

  68. Ralph,

    In ultimate-tag-warrior-actions.php, replace

    http.open(‘get’, ‘$rpcurl?action=’+action+’&tag=’+tag+’&post=’+post);


    http.open(‘get’, ‘http://rainonline.ws/wordpress/wp-content/plugins/ultimate-tag-warrior/ultimate-tag-warrior-ajax.php?action=’+action+’&tag=’+tag+’&post=’+post);

    And in ultimate-tag-warrior-core.php; look for %technoratiicon%, and change each of the image urls to point at ultimate-tag-warrior instead of UltimateTagWarrior

  69. Hi Christine,

    it seems i’m too dumb to do it. I changed all wrong paths and references in those two files, but it still doesn’t work. What speaks against renaming of the folder, or can i somehow just install 2.6 in a new folder without losing my tags?

    Like i said, i’m using WP’s redirect feature of blog address != blog installation folder. Can this be the problem? Would it be better to move all files to the address’s root folder – but i guess, then i will experience some other problems.

    If you would like to help, i would grant you ftp-access to my WP-installation (data via mail).

  70. Ralph,

    You’d have to manually delete the tag tables to lose your tags; I’ll look a little closer into the blog address vs. installation directory address thing, and see what I can find…

    (Ooh. Looks like the image urls aren’t quite right… If you change ’em to
    /wordpress/wp-content/plugins/ultimate-tag-warrior/whichevericon.jpg, with a /wordpress/ at the beginning, everything will be awesome!)

  71. What a great plug-in!

    Two and a half questions:

    I’m using the UTW_ShowTagsForCurrentPost($formattype, $format=””) function, with technoraticommalist as $formattype. How do I turn off “No Tags” from appearing when there are no tags. Also, how would I put the word “Technorati: ” before the list of tags?

    Is there a way to make the plug-in go back through the content of older posts and find matches to tags already entered and add them to the table?

    Thanks. Very cool!

  72. For the formatting, use

    UTW_ShowTagsForCurrentPost(“”, array (“first”=>”Technorati: %technoratitag%, “, “default”=>”%technoratitag%”))

    [The first item, will include Technorati: first; and there’s no text displayed when there are no tags.]

    As for going back through older posts; if the tags are stored in a custom field (like Jeromes and Bunnys taggy plugins), then you can import those from the Manage Tags page. If your tags are in the content bodies in <tag> tags or similar; there isn’t an automatic way of importing those.. yet.. (:

  73. Christine,

    Thanks for the quick reply. I’ll drop that code in.

    For pulling the tags, I meant some feature that would crawl through the posts, look for the same words as those that exist in current batch of tags, and then associate those tags to the posts where it finds them.

    Sadly, I am all new to tagging, so I don’t have a base to start from.

    Thanks again.

  74. I’ve been messing about with it a little and playing with the formatting strings. I think I understand the easier bits!

    If I only have one tag in a post and use

    UTW_ShowTagsForCurrentPost(“technoraticommalist”, array (“first”=>”Technorati: %technoratitag%, “, “default”=>”%technoratitag%, “, “last”=>”%technoratitag%”))

    I get a comma at the end of a single tag. Is there a way to drop the comma if the count of tags is 1, or would that require adding another format string?

    Sorry, hope I’m not being bothersome.

  75. as above, simply an amazing plugin, seems like the most complex mod i’ve ever done to the wordpress and it worked the first time!

    I have “superajax” format running on my machine and when I try to send a tag to flickr it sends me to this page: “http://www.flickr.com/tag/MY_TAG”

    I don’t think this is a meaningful directory in flickr, the link it should be generating (I think) is: “http://www.flickr.com/photos/tags/MY_TAG/”

    I don’t know about any of the other links in superajax format, and I apologize if this was mentioned above, but I didn’t see it. :oP

    Thanks again and…thanks!

  76. Christine,

    Great stuff! Is it possible to make tag clouds from other fields? In my case: I’d like to include articles with the fields ‘keywords’ (foodporn), ‘author’ (Michel Houellebecq) and ‘source’ (French literature) of the articles. In the right column I’d like to display the top ten authors and sources and the top fifty (or so) in three different tag clouds? Is it possible, is it possible for you to code or is it possible for me to code? My dress code is rags and my computer code leaves no surprises… Other thing: would it be possible to present posts/articles as tag clouds, similar to Amazon’s concordances of books, for example: http://www.amazon.com/gp/product/sitb-next/0380977427/103-9643765-1061448#concordance .

    Thanks for sharing,


  77. Christine,

    Still using your excellent plugin.

    I have a couple of questions.

    1)Is there a way to test for the existence of tags for a given post? I’d like to wrap the the div that contains the tags in a little bit of logical goodness to hide the div when there are no tags, like for older posts.

    When I click on a local tag, it looks like it’s using my index.php page to render out the posts that have matching tags. Is there a way to use another page (say tags.php, should I make one?)


  78. Ok, I self-solved my previous question 🙂
    But I have another question: when I insert a two-word tags, e.g. optical effects, I would like to obtain a tags like “optical+effects” (as technorati wants, it’s right?) and not like “optical_effects” (as Warrior do). Can I change this?
    Thanks a lot.

  79. Christine,

    it would be great if one can obtain the tag page URL without all the html tag. It can be used, for example, to link a tag page with an image instead a text. I’ve temporarily bypassed the problem by the following custom formatting

    UTW_ShowTagsForCurrentPost(“”, array(“default”=>”%technoratitag% “, “none”=>”No Tags”))

    that give me a textual link to technorati and an image that links the corrisponding tag page (to not repeat twice the same boring tage name).

    But I think that the code “mysite/tag/%tag%” is dirty, and it cannot be applied with the technorati URL because it’s more complex to recreate.
    Thank you for the attention.

  80. I’m sorry, because of the removing of html code in my comment, I believe that is necessary that I rewrite the custom formatting without the html “” (I’ve replaced them with a minus “-“).

    UTW_ShowTagsForCurrentPost(“”, array(“default”=>”%technoratitag% -a href=’mysite/tag/%tag%’- -img src=’imageurl/image.png’ /- -/a- “, “none”=>”No Tags”))

    I hope that is all clear. bye.

  81. Yes! %tagurl% is what I mean. Thanx a lot. But actually it doesn’t documented in the help page. Does the replace-marker for technorati tag url exists?

    A lastest thing: UltimateTagWarrior 2.6.2 maybe have some problem with the ReWrite rule, no one row is written in the (already existing) .htaccess file. Can you control it?

  82. Hi Christine,

    just downloaded and installed 2.6.2. AJAX now works in Opera – that’s super-fine, but now, when i expand items and collapse them again the tag disappears. This can be repeated for every tag in post until no one’s left. Can you look into that? You can give it a try on my site…

    Cheers, Ralph

  83. Davide,

    There’s %technoratitag% and %technoratiicon%, but not one for just the url.

    Eep! I don’t *think* I’ve changed anything with the re-writing. Hrm.


    Oooh that is weird. I thought I checked that this worked properly


  84. Christine,

    great, when you could look into that. When you do so, please also check, that there’s “No Tags” anymore, when there’s no tags (AJAX). Stupid sentence – i know – but you’ll most likely know, what i mean.

    I’m prepping up some more places to search and i’m gonna send you the links and icons later today…

  85. Christine: Amazing Plugin! Thank you very much for your hard work. I’ve actually completely modified by site around this terrific script:


    One suggestion: I see that you’ve recently made some great updates, including the superajax stuff. One thing I think could be improved is the amount of documentation, especially with respect to new features and custom formatting options. And use plenty of examples, they help!

    One thing I’m having trouble with is the formatting of the superajax function. I would like the “+” to appear next to related links, but I don’t want all the other stuff… Is this possible, or is the superajax hard-coded to do all or nothing? Since the documentation is spotty, I had some trouble figuring this out.

    Again, one of the best plugins I’ve seen. Should be built into WordPress (instead of “categories”).

  86. Sorry, one more thing: I’d like to be able to limit the number of related posts that gets returned with the UTW_ShowRelatedPostsForCurrentPost function. Is this possible? Or is it an all-or-nothing deal?

  87. Sorry, another question: The “+” and “-” that the superajax and superajaxrelated uses is to add and remove tags from the SYSTEM, right?

    When I see a “+” next to a tag I assume that clicking it causes that tag to be added to the current tag (e.g. create a tag intersection). In other words, let’s say I’m looking at a page with all posts tagged with “art”. I might have a list of related tags such as “design” “webdesign” “artists” with “+’s” next to them. I would assume that clicking the “+” next to “design” would filter the page to show posts tagged with art AND design… This is how del.icio.us functions, and I believe the + is becoming the standard for tag intersections. UTW’s “+” function differently, no?

  88. Another feature request for the next version: it would be nice to have control of the threshold at which tags on the admin screen become a dropdown. Personally, I’d prefer to have all the tags listed out versus a dropdown, and making this an admin option is fairly easy, no? (I edited ultimate-tag-warrior-actions.php to make it suit my needs, but it’s be nice for non-technical users to control their interface options.)

  89. Jarrod,

    I need to have a good look at the help documentation for it… it has gotten several versions behind. I’m thinking that spinning the formatting stuff off into a seperate file might be a good and wonderful thing – an earlier incarnation of UTW had a help file which was just daunting to look at since it was filled with so much stuff.

    With the Ajax stuff, – deletes a tag from a post; and + adds a tag to a post… Changing the +’s to view the intersectiony page might make a bit more sense. I should really ponder this stuff a little more – it is all-or-nothing at the moment; and it would be better to break it into smaller bits that could be included in a formatting string.

    There are a couple of (undocumented) places that will accept a limit… but the related posts one doesn’t… yet (: I’m just looking at that at the moment.

    And for the display of tag links vs. dropdown on the edit page; I arbitarilly picked 50 as the threshold for switching to the dropdown, but there is an option to always display tag links… I think that’s probably enough of a choice for most people, most of the time (Arr! And reminds me that I really do need to re-engineer the options page quite drastically… it’s getting a bit cluttered and hard to use.)

    Thanks for the suggestions.. I’ll keep tinkering away at it; and maybe one day I’ll get it finished (:

  90. Well, I finally got the base functionality to work, That is the edit page has a tags field running from utw, it also does the ajax stuff as well. But what am I supposed to do with the categories list now? I was using cat2tag, which basically uses categories as the tags, so now I have a lot of category tags which I won’t be using now? Basically, my question is, Using UTW, what should I be doing with my wordpress categories? Keep all posts in one category? delete the rest?

  91. Fidel,

    Well, once you’ve imported the categories into UTW (You know you can do that, right? (: ), I guess you could delete the other categories. Personally, I’ve retained a relatively general set of categories, and keep the tags for finer-grained keywording.

  92. Well, That is done.. I did that before I hosed the categories. I do have all my tags in the db. Now all I need to do is get the rewriting done. Which.. Doesn’t want to work. And what do you mean exactly by superajax formatting? Do I do this as I enter tags? Also is there a way to create a tagcloud outside of the loop? like as a global tagcloud page template?

  93. You’re the second person to have trouble with the rewriting… I have a feeling that I broke it somewhere along the way ):

    “superajax formatting” is how lists of tags display when you use the “superajax” format.

    A tag cloud can go anywhere on the page – in the loop or out. There isn’t a particularly convincing global tags page at the moment, though ):

  94. nevermind about the superajax part I got the base functionality of that working as well. I’m still having trouble creating a global tagcloud and and getting the rewriting to work.. I think this might have to do with my db though.. Not sure..

  95. You might have but then again you might have not broken it… This is what the rewrite line from my htaccess file looks like.

    RewriteRule ^tag/?(.*) /index.php?tag=$1 [QSA,L]

    Looks all right to me.. But it returns everything.. not just for a tag.. I think that might be on my end..

  96. I just noticed.. the flickr url needs to be changed to

    http://www.flickr.com/photos/tags in core. both places probably.. Couldn’t figure out why the first edit didn’t work, then noticed there were two references to the url. The second one fixed the flickr icon going to a flickr 404.

  97. As a matter of fact I was. Uninstalled, Deleted.. Perfect functionality. Last piece and I’ll be done. The cosmos. Whee! Thank you for your timely help.

  98. Great work! I like it a lot. Thanks for all the effort you’re putting in!

    I also had the problem with tag links just returning everything, but removing Adhesive worked a treat 🙂

  99. I’m a bit confused… I’m a new install of UTM, but there’s no install script as is mentioned in the help file. Your version notes mention that it’s not necesarry for an upgrade, but what about new installs?

  100. Bruce,

    I need to update the documentation (:

    It *should* install all the bits it needs automatically; if it hasn’t, couldja let me know (: (The auto-install stuff is new in the most recent release…)

  101. Christine,

    Before I saw your response I installed 2.6, ran the install script, and then laid 2.62 overtop of it. No big deal. Had I been paying attention and seen that I was originally uploading 2.62 to the wrong domain, it probably would have installed itself… it’s early yet and I’m still asleep (or at least that’s the story I’m sticking to). 🙂



  102. I installed 2.6.2 on my WP 1.5.2 install. Everything seems to work fine, except for saving a post with tags. I get the following error:

    WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1]
    SELECT DISTINCT t.tag FROM wp_tags t INNER JOIN wp_post2tag p2t ON p2t.tag_id = t.id INNER JOIN wp_posts p ON p2t.post_id = p.ID AND p.ID=

    WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1]
    SELECT DISTINCT t.tag FROM wp_tags t INNER JOIN wp_post2tag p2t ON p2t.tag_id = t.id INNER JOIN wp_posts p ON p2t.post_id = p.ID AND p.ID=

    When I reload the post, the tags have been saved. I’m just not sure what’s going on in the code that would give that error — or what should be happening, but isn’t. For what it’s worth, I’m running on MySQL 4.1.13.

  103. Pingback: basimo.de
  104. I figured out the problem — sorta. There was an interaction between Jerome’s PreFormatted plugin and UTW. Whenever I saved a post, the PreFormatted plugin was trying to save the PreFormatted version of the post. Which, apparently, included the tag output. Only $postID wasn’t being set when GetTagsForPost was being run. Once I disabled the PreFormatted plugin, everything started working fine.

  105. Great! I love your plugin! One short question: I want to put a cloud at my sidebar of my blog, but I’ve to many keywords – that cloud is too big. Is it possible to shrink it with any parameter? Maybe the cloud should use only tags, which have 3 or more posts …

  106. Joe,

    Hum. I’ll see if I can find a way to work around that.


    Try <?php UTW_ShowWeightedTagSet(“whicheverformatyouwereusing”,””,50) ?> (instead of 50, you can use some other number..)

    (Some of the functions will take a maximum; but not all of them… yet… but in the next release they should. Next release ought to be out later today (And will include another fix for the tag clouds, incidentally))

  107. Christine,

    I love tag clouds, I just don’t always like the way they turn out where just a few tags are very large and a whole lot of them are of the same tiny size (scroll down). Reason: frequency determines size. Is it possible to make an option where ‘rank in frequency’ determines size, for example: no.1 gets 25px, 2 gets 24px, etc. Preferably with the option to determine how many rank numbers get a font-size: no.’s 1-3 get 25px, 4-6 24px or any other way of assigning them. I thought in first instance that this would result in a ‘less true’ tag cloud because it is manipulated and doesn’t show the real relative relevance, but the tag cloud as it is now shows no variation at the least frequent tags: they all have the same tiniest font-size yet some tags may be 5 or more times as frequent as others. Is this maybe what you mean with ‘To do: Allow assigning weights to tags’?

    Hasta la pasta!


  108. Gerard,

    *ponders* What version of Ultimate Tag Warrior are you using? Some of the earlier versions used a fixed size range, and compressed the lower end (to prevent illegible tags); Later versions allow specifying the minimum and maximum font sizes, distributed across the whole range (which I think might resolve your issue).. Otherwise, I’ll see what I can wrangle for you (:

    I’m not completely sure what I’m going to do with the weighted tags just yet; but I know I want to do something! (:
    I was initally thinking more along the lines of figuring out better related links/tags; but invariably it’ll trickle into the tag cloud and the tag graphs as well.

  109. Ponderosa,

    “specifying the minimum and maximum font sizes, distributed across the whole range” will still leave a large heap of undifferentiated tags, won’t it? Let’s say you have hundred tags

  110. Gerard,

    It depends on how often each tag gets used! (;

    My tag cloud down there / are my top 150 tags, and are used between once and fifty times. I’ve set it up to use fonts between 10px and 35px, so there’s a range of 25px; therefore each time a tag is associated with a post, its size increases by 0.5 px… so yeah, the low end is cluttered; and there’s a lot of variation at the high end (since there’s no 49, 48, 47, …., 37, 36, 35 before the second most popular tag and so on down to about the 25th most popular)

    If, on the other hand, your 100 tags had a much smaller range (say, between 5 and 30), then there’d be a 1px difference per time a tag is associated with a post which would be a bit more noticable.

    I’ll see what I can do along the lines of a tag cloud that looks at rank instead of weight, though (:

  111. Thank you for your very quick answer!!! May I ask a second question?
    I want to do this: the list with the tags for my own page – but after each tag I want a little image which linked to technorati tag. I made a photoshop collage which illustrate my wish:

    Is this possible?

  112. Like Ralph said previously, alphabetical sorting for tags would be very nice.

    Weighted sorting would be cool as well. Especially if you had an option to put your common tags toward the front or back of the tag list. Tags that have an equal number of posts could be sorted alphabetically.

  113. Herbert,

    Definately possible!

    <?php UTW_ShowTagsForPost(“”,”%taglink%%technoratiicon% “) ?> will display just a simple list.

    If you want commas between the items, it’s a little more interesting:

    <?php UTW_ShowTagsForPost(“”,array(“default”=>”%taglink%%technoratiicon%, “, “last”=>”%taglink%%technoratiicon%”)) ?>

  114. Pingback: The Theocrats
  115. Pingback: WP 1.6 do not use
  116. Why do you not contribute to the WordPress-Codeing-Team? 😉

    THX for that great piece of code.

  117. Hi there Christine..

    I’m having problems.. Surf around on my site and click on the tags.
    Some of them is workin and some.. ehm, not. =(

    Is there something i’m missing here?

    thanks for any help at all =)

    greets from sweden

  118. Question for you. When I uploaded the files and activiated it via the Administration panel, and then navigated to Manage>Tags, I see several errors:

    WordPress database error: [Table ‘weblog.wp_tags’ doesn’t exist]

    I was wondering were the install script was for the most current release? I used one from an older release, but I got nothing but a 500 error:

    500 Internal Server Error

    The server has encountered an internal error or misconfiguration and was unable to complete your request.

    Any suggestions?

  119. ehmm.. forgot to write some stuff..
    while some of the tags work by clicking on them, some don’t.

    i get to the resultpage and get the text: Sorry, no posts matched your criteria.

    I really don’t know where to look and how to fix..

    Thanks again for this really cool plugin!

  120. William,
    I posted a response in the 2.7.2 version page. (Short version: it should be installing itself; if it hasn’t; that’s weird!)


    That’s.. odd. What are you using to create the list of tags?

  121. Mike,


    I may have broken tag.php stuff (RSS+tag.php didn’t get along; but I thought I’d fixed it, but perhaps I hadn’t…) I’ll have a closer look to see what I can see.

  122. Mike,

    The next time your .htaccess file gets updated, the rewrite rules that make the RSS feeds work so smoothly will (probably) vanish… (I think. Gah! Too many versions of the plugin (: )

  123. Yeah I copied the rewrite rules. The new ones with 2.7.2 seem to work well with 2.6.2. I noticed that the private entries do not display in 2.6.2 but do display in 2.7.2, but there is an error in 2.6.2 as well. I have entries that appear for tags they are not assigned to. Is there possibly a problem with my database? I’ve backed it up a couple of times and have exported the tags to a custom “keywords” field in the system in case something bad happens.

  124. Tag: ucla

    2.7.3 fixed the problem with strange entries appearing, so it wasn’t a database issue. However, tag.php is still not being called up. RSS and pagination work perfectly with index.php though.

  125. Mike,

    *cough* I may have uploaded a shiny new 2.7.3 just moments ago… I did some closer looking, and in my tests it *looked* like it was working, but alas, my tag.php looks sufficiently similar to my index.php that I didn’t notice it wasn’t being used (;

  126. Perhaps a dumb question – but where are the install instructions? I want to switch from Technorati Tagging over to UTW – so I unzipped the files in the appropriate folder, activated, and then didn’t really know where to go from there. Google took me to a very old version. I assume I need to add in some code snippets to various templates?

    BTW – You had me at AJAX – your cool easy ajax tagging is what caused me to switch….

  127. Mike McK,

    In theory… it installs itself (each time the plugin code is included, it checks whether there’s any new stuff that it needs to install).

    (If it hasn’t installed itself, let me know, and I’ll see what I can figure out – I’ve tried installing it on a couple of different wordpress installs and it’s “all just worked”, but there have been a couple of people for whom “it all just hasn’t worked”. One of the big giveaways that it hasn’t worked: the Manage>Tags page gives SQL errors)

    There’s a help html file included (there’s a link from the Manage>Tags page on the admin side of things) which ought to point you in the right direction as far as template changes and whatnot.

    Ah AJAX.. the magical buzzword of the moment.. (:

  128. Umberto,

    It should automagically do any instally-bits (lemme know if it doesn’t…. sometimes it does, sometimes it doesn’t; and I’d like to figure out why it doesn’t, when it doesn’t..)

  129. Okay, thanks. The help.html speaks of installing through the install.php. That mushroomed me.



  130. Hi there again..
    Theese are my Plugins:
    WeatherIcon, Acronym Replacer, AutoLinker, Bad Behavior, Bad Behavior Stats, CG-Archives by Year, External Link Icons, Front Page Categories, Spread Firefox, Dunstan’s Time Since, WordPress Database Backup and Gallery2 Integration.. 🙂

    So.. Not too many 😉


  131. Christine,

    I’m running into the same problem as Cordac (just installed 2.7.3): http://www.mydomain/tag/mytag gives me ‘sorry, no posts matched’. Contrary to the only one post (or am I missing some?) that works at Cordacs (http://www.cordac.se/tag/macintosh/) through about 4 tags, I don’t find any of my posts through the tags. Maybe the answer/solution lies in the uniqueness of that only working post of Cordac. Dunno. When is the release party of ‘Ultimate Tag Warrior for Dummies and Pacifists’?

    No other working plugins in my story.



  132. cordac/Gerard,

    I have a pretty good idea about where the problem is likely to be occuring (The bit where I stopped private/future posts from displaying…) I’m just trying to think of a way that’ll be easy for you guys to tell me what’s happening.. (:

    (I’m wanting to see if the $request is being mangled somewhere along the way before it gets the posts. It’s finally used at around about line 550 of wp-includes/classes.php.. I don’t know if you guys are familiar enough with PHP to grab the value for me, though.. I will ponder a little further and see what I can come up with)

  133. Christine,

    I’m not familiar enough with PHP to do any thorough research. Only if you specify very thoroughly which colour of mangle I’m looking for. I’m daring enough to ask for a new (or an unknown one for me) feature: ‘tag highlight’ where the tag you click from the tag cloud or above your post gets highlighted when the post is shown. Oh yeah: can something be done about the differences in display of the tag clouds in Firefox and IE, when using the ‘s around it IE makes chocolatefudge of it, in Firefox it is nicely parsnipped.

    Hasta la pasta,


  134. Fletcher,



    That depends… (:

    If you want to replace the current display with just the simple list, that’s pretty straightforward: Create a tag.php in your theme, and display only the title of the posts in the wordpress loop (and probably put the name of the tag in there some place)

    If you want to have the archive in conjunction with the current tag page… I’ll have to think on that one and get back to you.

  135. Gerard,

    Certainly the tag cloud is chocolatefudgey, or perhaps caramelly in IE… I can but assume that IE thinks it’s doing what it’s supposed to; but I’ll see what tricksy tricks I can do to get it to behave properly.

  136. Hi! I use this plugin on several blogs. Thanks a lot!
    Since I use w.bloggar to post to my blogs I wonder if I can use the keywords feature of w.bloggar to add directly the right tags?

  137. Fletcher,

    Let me think on that one a bit – There ought to be a nice straightforward way to do what you want; but I don’t think there is just at the moment.

  138. Markus,

    AFAIK, that’s not something that I can do within the bounds of the plugin… (which is really annoying d: )

    One of these days, I’ll have a look into making some tweaks to the wordpress code that listens for posts from external tools; and see what I can wrangle (:

  139. Christine.

    Your tag cloud below looks fine in IE6, but the one I’m fiddling with at http://arsblog.com/music/ has comeout yucky.

    I dunno, any CSS styling tips or other words of wisdom you might impart? I’d like to make it pretty in everyone’s browser if I can 🙂


  140. Jonah,

    Uhm. Hrm.. Err.. Arr..

    Maybe switch to one of the formats that doesn’t have the subscripty numbers in it, for now; and I’ll have a poke at it when I get home from work, and see what I can coax out of it.

  141. Hi Christine,

    thanks for writing this plug-in! I’m trying to get it to work, but I am getting this error:

    WordPress database error: [Table ‘mw.rotterdam_tags’ doesn’t exist]
    select tag, t.tag_id, count(p2t.post_id) as count from rotterdam_tags t inner join rotterdam_post2tag p2t on t.tag_id = p2t.tag_id inner join rotterdam_posts p on p2t.post_id = p.ID WHERE post_date_gmt 0 order by tag asc

    No tags are in use at the moment.

    the plug-in didnot create a _tags table in mysql database. May be because I didnot run ultimate-tag-warrior-install.php, because I could not find this program (it wasn’t included in the .zip I downloaded.) What can I do?



  142. Martijn,

    Hrm. In theory it installs itself; but it hasn’t for a couple of people..

    I think when I get home from work, I’ll add a “force reinstall” button to the admin bits; so at least that way if it doesn’t install properly, there will be an easy way to reinstall.

  143. thanks! what part of the code should create the tables in the database? may be I can have a look at it and see if for some reason it cannot communicate with my mysql

  144. I’m just finishing up the “Install it again!” bit right now… so shortly, you’ll be able to go to the manage tags page, and click a button, and everything will be dandy!

    (Or it won’t be dandy because of some idiosyncrasy which stopped the install bit from working in the first place)

    In any case, look for a new version in the next fifteen minutes or so! (:

  145. altough: it works fine, I can add tags to post, and when I switch on the automatic display, they are shown in the loop.

    but when I try to call them with your functions, I get this error:

    Fatal error: Call to undefined function: utw_showtagsforcurrentpost() in /nfs/vsp/dds.nl/m/mw/public_html/rotterdam/wp-content/themes/classic/index.php on line 27

    any idea?

  146. Cordac,

    Gah! I sent you an email a couple of days ago asking for a copy of your whole plugins folder (so that I can sorta duplicate your setup, and figure out if it’s my plugin interacting with another of your plugins).


    If you could email your plugins folder, that would be super (: [I’m not sure if any of the plugins on your list contain usernames/passwords; but if they do, remember to change ’em (; ]

  147. Hello, I’m running WP 1.5. Today I tried to install UTW uploading files in the plugin folder, but I got an “internal server error” and an additional 500 error. My error log was signaling a problem in rewrite at .htaccess file. I deleted the .htaccess file and restored the site. Needless to say, I cannot run your interesting plugin. Any suggestions? Thanks

  148. Hiya,

    I haven’t *tried* using the latest version with wordpress 1.5; so when I get home from work, I’ll give it a try and see what I can find for you.

    – Christine

  149. Hrm.

    It seems to be behaving for the most part, for me.

    What are you seeing in your error logs? (You can email me directly if you want: uhm… fishsticks [at] neato [dot] co [dot] nz) Do you have other plugins that do strange and interesting things to the .htaccess file? Have you made changes to the wordpress code (that’s one of the more common reasons for using older wordpress…)?

  150. Hi, from my error log I got the error indicating (I cannot recall exact words) the inability to rewrite feeds, from .htaccess. That created an internal server error AND a 500 error handling a document. Therefore, I had delete my .htaccess file and creating a new one. I didn’t regenerate permalinks before installtion, actually. I didn’t no significant changes to WordPress, only I’m using plugins like Bad Behaviour, BBStats, Feedburner Feed Replacement, Democracy. I recently got a hack to cut down access times to the Dashboard.

  151. Sweet.

    I’ve got a much better idea as to what I’m looking for, now.. (:

    (And if I don’t find the problem directly; at least I can avoid writing the re-write rules if I don’t have to)

  152. I haven’t finished up everything that I need to, to do the next shiny release of UTW ):

    In the meantime, I guess you could comment out the part of the code that adds the rewrite rules (not sure how PHP-savvy you are..) – around about the second function in the ultimate-tag-warrior-actions.php file is ultimate_rewrite_rules. If you comment out or remove the $rules[something] = "something else";; then that will at least get you a set closer to having the plugin working(ish).

    (I still haven’t managed to get it to break in the same way you have, though)

  153. Not very php-savvy, I.M.H.O.!! I will try when I’m back from the office (I’m located in Italy). Thanks!

  154. This is great, but can you please put a description at the top of this page that actually describes what this does. I see people talking about this and I’d like to know what all the talk is about. What does this DO? It must do something great but I’m not sure what it is. Thanks.

  155. Ultimate Tag Warrior “allows tagging posts in a non-external-system dependent way; with a righteous data structure for advanced tagging-mayhem.” Basically, it is the most powerful tagging solution available for WordPress. Not only does it allow you to easily assign tags to posts, but it also allows you to display tag lists in four different ways (see the bottom of this page, bare-bones list excluded), and includes many more helpful features.

  156. I totally had an e-mail open and written out to you… and I was about to press send, but then I noticed this, in the changelog:

    Custom formats can now have a “single” format, which is used when there is only one matching item.

    Which was totally what I was going to ask you for! I was having issues when I was doing stuff like opening a DIV on ‘first’ and closing it on ‘last’, and it was, of course, leaving the DIV open when there was one item. You++ !

  157. When the option of “Automatically add categories as tags” is selected, a post gets tagged with all the categories you selected, with the exception of it’s default category. Anyone else running into this problem?

  158. Well, Once you change the name from “Default” to something of value and end up using it all the time, it becomes important.
    Is it something that would be under consideration to change in a future release? Perhaps not, it seems like there’s no demand for it?

  159. Everything is up for consideration!

    I’m a little weary of changing the way things work: there might be people using it with the assumption that the default category is being excluded, since that’s the way it has always worked.

    (This is the first request one way or the other, incidentally.)

  160. Hi Christine.

    Two pieces of feedback:
    1.) “Force Reinstall” is giving me the following error:

    WordPress database error: [Unknown MySQL error]
    ALTER TABLE wp_tags CHANGE id tag_id int(11) AUTO_INCREMENT

    Any ideas?

    2.) I have noticed a significant decrease in page load speeds since adopting UTW. Any thoughts?

  161. 1) Don’t panic! It’s trying to change the name of the id field in the tags tble to tag_id; but since it has already been changed, it’s throwing up an error.

    2) Hrrm. Is it still super-slow if you un-UTW it? (All of my pages have what is essentially three tag clouds displaying, and still manage to generate in less than 1 second.. Even this page with its 250 odd comments took 0.9 seconds this time it loaded.)

    Ooh! And how many unique tags do you have? I’m getting that performance ^ with 327 unique tags used 709 times.. Your tagcloud is displaying 150 (but that’s the default number); so I’m wondering if perhaps you have profoundly more tags than me.

  162. Awesome plugin, but I’m having some difficulty with it. I installed the latest (2.8) into a fresh WP install, but the edit fields for the tags for a new post always has this in it:

    Looking at the source code shows that instead of the list of tags associated with the post, instead you get this:

    WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY t.tag ASC' at line 1]
    SELECT DISTINCT t.tag FROM wp_tags t INNER JOIN wp_post2tag p2t ON p2t.tag_id = t.tag_id INNER JOIN wp_posts p ON p2t.post_id = p.ID AND p.ID= ORDER BY t.tag ASC

    The error seems to come from line 429 of ultimate-tag-warrior-actions.php:

    $utw->ShowTagsForPost($post, array("first"=>'%tag%', 'default'=>', %tag%'));

    Changing it to the following seems to fix it, though there may be regressions (though I doubt it):

    if ($post) {
    $utw->ShowTagsForPost($post, array("first"=>'%tag%', 'default'=>', %tag%'));

    It’s 3:30am here and I just started messing about with this about 10 minutes ago, so make sure this doesn’t blow anything up.

    Great job on an incredible plugin, and I look forward to future versions!

  163. Hah – couldn’t resist messing about with it more, as it had another error when editing a draft. Again, trying to get the tags for a nonexistent post, line 415ish:

    if ($postid) {
    $q = "select t.tag from $tabletags t inner join $tablepost2tag p2t on t.tag_id = p2t.tag_id and p2t.post_id=$postid";
    $tags = $wpdb->get_results($q);

    if ($tags) {
    foreach($tags as $tag) {
    $taglist .= $tag->tag . " ";
    $taglist = substr($taglist, 0, -1); // trim the trailing space.

  164. I just installed 2.8.1, with WordPress 1.5.2, and I noticed if I have both local tags and Technorati tags active, there is no space between the last local tag, and the “Technorati tags” title. Visit
    http://www.romanedirisinghe.com/ for examples.

    Also, independent of what items are checked in the “manage tags” admin page, the Yahoo Suggest keywords will show up, but clicking them doesn’t add them to the list. Any thoughts?

  165. Christine,

    Thanks for creating this feature in WordPress. I’m using the Blix theme (which I’ll be customizing), but want to replace “Categories” and those I’ve created on the right-hand side with “Tags” with those that get generated as I move along. Can you tell me how to do that?

  166. I don’t quite understand how the tag archives work.
    Are they different from the default tag pages (that currently use index.php?tag=$1) to display wordpress posts that have a specified tag?
    Or does that plugin just provide the ability for the use of index.php?tag=$1 ?

  167. Slight formatting problem. Can’t get a line feed under the tag cloud area for the next in the left hand sidebar. Can you help? Is therer some kind of config thing here?

  168. BIll,

    Not super-easily*. What are you wanting to put in the title? I may be able to make an easy way of doing it.

    * you could wrangle it using custom formatting strings.

  169. I hope it wasn’t asked many times and I missed the answer…
    Is there a way to let people tag our post?
    If not, this is how I see the feature could be implemented.

    Visitors could tag post as they wish. Tags would then be placed in a queue that the admin could review and approve. Getting an email telling us a post has been tagged. Registered users could tag without first been moderated and an option could let us choose which level has the ability.

    And another feature who could be awesome is if it was possible to have a feed for tags. So for exemple, people could subcribe to the tag “Wordpress” and get all posts tagged by “Wordpress”.

    Thanks for the great plugin. This has to be my favourite of all!

  170. themaxx.ca,

    If you use the UTW_AddTagToCurrentPost function; then anyone can tag your posts; however I haven’t built anything in the way of administering it yet (I have started keeping track of the IP address that added the tag, though).

    Feeds for tags already exist (:

  171. Grrr….

    Christine, seen this one before?

    When using UTW_ShowRelatedPostsForCurrentPost("htmllist"), I only get a bunch of %taglink%’s displayed.

    Then… the only way a tag link will work is if it set without a rewrite scheme AND if I reset my blog to use the default un-rewritten URLs.

    Not good.

    History though. I moved from WP->Textpattern->WP recently (Don’t ask!) and used the same db the whole time….

    I’ve done a force reinstall of UTW just in case there’s some wackiness between the plugin and the database but I get the same result.

    I’m on WP 2.0 RC1.


  172. I have seen that one before!

    The lists of posts have slightly different format names – you want


    (It’s a tricksy little thing…)

  173. I also had the problem that i got several SQL Errors after installing. those with ” Unknown Column “. the reinstall first did not solve the problem.
    You have manually to delete all tables first! and then click the reinstall.

    i did not find this answer here so it might help someone.

    Now let´s hit the tags 🙂 thanks for your work

  174. Just installed, and it seriously munged the write post page. The Tags and Tag suggestions bars are not draggable or expandable, either.

    Were they supposed to move under the post text, or stay in the right column?

  175. Great plug-in, Christine. I had the same problem as commenter #235, and noticing that he posted back saying he fixed it by re-activating your plug-in, I tried the same. The problems is gone, and I know what was wrong to begin with.

    Your plug-in download includes a whole folder in which you have legacy versions of UTW. After installing the first time, I clicked on “the new plug-in at the top”, which happened to be version 1.3. After activating version 2.9.2, the Call to undefined function: utw_showtagsforcurrentpost() in problem went away.

    Anyway, I just thought I’d let you know.

  176. A very useful and FUN plugin! Thank you!

    I have two questions, one is that I’m having the same trouble as cordac (#189) above (“Sorry, no posts match … “), but I’ll keep an eye on this page for an answer. My guess is that it’d be something with the url rewrite.

    But my big question comes from this WP request. My specific case is this one. That post was months ago, but my issue remains: multiple category search like a job search site or an apartment search site. At this point, I don’t care so much HOW it works, but I need this working in some way (or I’ll probably lose the project).

    I’ve also worked with Drupal, but it’s too clunky for me and I’m just in love with WP … 😉

    Thanks for any comments you may have (I’m sure they’d be appreciated over on that WP post, too, if you have an extra few minutes to post your comments there).

    Thanks again for the plugin and your time.


    – Bradley

Comments are closed.