Christine of neato.co.nz

⇩ More

Ultimate Tag Warrior Updates

Latest Version : 2.9.2.1

Things Worth Knowing About Since The Last Version
2.8.9->2.9

  • 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

2.8.5->2.8.6

  • 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)

2.8.4->2.8.5

  • 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.

2.8.3->2.8.4

  • 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

2.8.2->2.8.3

  • 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%

2.8.1->2.8.2

  • 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.)

2.8->2.8.1

  • 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

2.7.7->2.8

  • 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!)

2.7.6->2.7.7

  • 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.

2.7.5->2.7.6

  • 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

2.7.4->2.7.5

  • 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.

2.7.3->2.7.4

  • Adds Yahoo! keyword suggestions to the post editing page

2.7.2->2.7.3

  • 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

2.7.1->2.7.2

  • Just a bugfix for -1 limits

2.6.2->2.7.1

  • 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!

2.6->2.6.2

  • 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 2.9.2.1, for WordPress 2.0 | Ultimate Tag Warrior 2.9.2.1, 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
Add-Ons

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.

Posted in | 284 Comments

284 Responses to Ultimate Tag Warrior Updates

  1. 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++ !

  2. 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?

  3. Hee.

    In theory, that’s a feature (:

    (I figured that, in most cases, including the default category isn’t that useful. Shows what I know (: )

  4. 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?

  5. 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.)

  6. 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?

  7. 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.

  8. 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!

  9. 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.
    }
    }

  10. I just installed 2.8, and I have this same problem… Just thought I’d chime in.

  11. I’ve written the fix for this, so next release!

    (Which ought to be tonight..)

  12. Hi C., in 2.8.1 i miss a way to collapse the tag links again – expanding works fine…

  13. Whoops! I guess I broke that.. I’ll fix it up for the next release.

  14. 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?

  15. I actually think it would be nice to have local tags and Technorati tags on separate lines. That is, add a line break after local tags are done. Thoughts?

  16. 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?

  17. Pingback: henman.ca » Blog Archive » Neato: Ultimate Tag Warrior Updates

  18. 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 ?

  19. By default, the tag archives will use index.php; but if your theme has a tag.php file; it’ll use that instead.

  20. 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?

  21. Is it possible to add a custom title=”" to a %taglink% in UTW_ShowTagsForCurrentPost ?

  22. 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.

  23. Great plugin!

    By the way, I can’t extract 2.8.7 zip file. Everyone encounter similar problem? 2.8.6 zip file is okay.

  24. 2.8.7-archive is corrupt.

  25. I’ve fixed the link, now.

  26. 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!

  27. 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 (:

  28. 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.

    THoughts?

  29. I have seen that one before!

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

    UTW_ShowRelatedPostsForCurrentPost(“posthtmllist”)

    (It’s a tricksy little thing…)

  30. 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

  31. Just installed 2.9.2.1, 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?

  32. 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.

  33. 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.

    Best,

    – Bradley