WordPress 1.5.2 Broke My Site

So, WordPress 1.5.2 was released recently — good news, right? Normally, yes :). By the sounds of it, this was mostly a bugfix/security release, but it sounded like a good idea. I went through the upgrade process this afternoon and things seemed to be ok, at first. After uploading the new files, I loaded the home page and it seemed fine.

I should have tried something more involved than just loading the home page — as I discovered a bit later, any link within the blog would just show the home page’s entries again. Or, put another way, suppose that the home page hypothetically has three entries, “A”, “B”, and “C”. If I were to click on the permalink (the title) for “A”, I should see just that entry, plus the comments box and any existing comments. However, after doing so, I just saw the same entries as if I was on the home page (“A”, “B”, and “C”) even though the URL was that of entry A’s permalink (/archives/yyyy/mm/dd/post-name/).

Other pages within the site acted similarly — even a search query would return the same entries as the homepage. Interestingly enough, the sidebar did say “You have searched the archives for…”, as if I had done a search, so it wasn't literally showing me the home page again. Not sure what to do at this point, I took the Windows approach — a restart; I went through the upgrade process again, being careful to disable my plugins beforehand, delete the old files before uploading the new ones, and running the upgrade script afterwards. Still, I had the same result.

I was a bit cheesed off at that point and I wasn't sure what else I could try. As a last idea, I tried rebuilding my .htaccess file (in Options → Permalinks) but that had no effect. In the end, I just downgraded back to 1.5.1.3. And, everything is fine again. All that aside, I don't want to give the impression that I have anything less than complete respect for the WordPress team — their work is top-notch and they have a great product. For all I know, maybe this was a typo in the code somewhere or perhaps a small mistake on my part.

Found a Tag Cloud Plugin for WordPress

I’ve been able to use more specific categories with my posts since installing the Cat2Tag plugin for WordPress. In short, it adds a text field below the textarea on the “Write Post” page where you can enter a comma-separated list of categories for the post. And, if a category doesn’t already exist, it’s automatically created for you.

One benefit to having more specific categories is more relevant categorization within Technorati. Each post in Technorati is listed by its tags and it assigns those tags based on the categories into which the post was placed. (Or, from the technical perspective, Technorati reads your RSS and extracts the categories from there.)

Anyhow, Cat2Tag has been working nicely; the only downside is that a regular list of categories could be a bit on the lengthy side. So, I’ve made use of Christoph Wimmer’s Heat Map Plugin for WordPress which you can see in the sidebar. The effect, also called a tag cloud, lists the categories sequentially but assigns font sizes based on the number of posts in each category.

I'm pleased with how the Heat Map Plugin worked out and Wimmer was thorough in his implementation. For one thing, rather than arbitrarily using pixel-based font-sizes, one of the function's parameters is a font-size unit — so, you can have it specify the sizing in ems, percentages, pts, or even inches.

And, as is common for WordPress plugins which “get data from the database and output it”, the function also allows you to specify code to insert before and after each link; so, if you set that to <li> and </li>, you can have a semantic unordered list (for those who aren't using a visual web browser).

Prevent Lost WordPress Posts

You may recall an entry from a couple weeks ago about pretty URLs in WordPress. As it turns out, I ended up writing that entry twice. It wasn’t that I didn’t like the first version, but I just accidentally closed that tab in Firefox at the time (oops). I meant to click on the right-most tab in my browser but I instead clicked on the “close tab” button right there instead. Poof!

I was a little bit annoyed but there wasn’t much I could do about it. I wrote the entry a second time and I later looked around to see if there were any utilities which might help prevent that kind of thing in the future. One that I thought to look for was some kind of “undo close tab” extension. Well, ask and ye shall receive — a guy named Dorando created an extension called Undo Close Tab (how apropos). And, if you'd normally be wary of downloading an extension from a forum post, rest assured that he has a home page for his extensions as well, though the bulk of the information on Undo Close Tab is in his forum post.

I then took aim at the second thorn in my side, that dumb close-tab button which foiled my plans earlier. After all, even though an undo-close-tab extension would have saved me from the predicament last time, I wouldn’t have even been in that scrape if it wasn’t so easy to hit that button ;). Fortunately, that’s easily done as well. This MozillaZine Knowledgebase article writes about moving the tabbar (to the bottom of the browser or elsewhere on your screen) but it also includes the steps on removing the close-tab button (regardless of whether you want to move the tab bar as well). In short, you can remove your close-tab button but shutting down your Firefox and adding these lines to userchrome.css:

/* remove the close-tab button */
.tabbrowser-tabs > stack {
display: none;
}

Your userchrome.css file goes in your Firefox profile directory but the file doesn’t exist by default. Rather, there’s an example file called “userChrome-example.css” which you can Save-As to userchrome.css and make use of that. And, that previous link on the profile directory offers some tips on where your profile directory is located; that information is fine, though you may find it just as easy to just search your drive — starting from C:\Documents and Settings\ — for “userChrome-example.css”.

I felt better after getting those Firefox bits in order, and I then came across a WordPress plugin which also looked helpful. Gregory Wild-Smith wrote a plugin called Twilight AutoSave which “uses cookies and JavaScript to save the data you are typing and allow you to restore it (or delete it) later”. With that and the Firefox goodies in place, I should have a lesser chance of losing my posts next time. Not that I’m going to tempt fate, but I do have some peace of mind about it now.

Pretty URLs in WordPress

If you’re a new WordPress user, you may have noticed that some WordPress blogs have “pretty URLs” with the date and the name of the post in the path. It’s not hard to set it up and you can have URLs such as “yourdomain.com/archives/2005/04/21/post-name/” . (In addition to the aesthetics, this also lends to higher search engines rankings as search engines consider a link’s path relevant.)

So, how does it work? Well, “permalinks” are set up through the options in WordPress and all the magic happen behind-the-scenes through virtual URLs on the server (so don’t worry about having to create all those directories manually). But before setting the options, you’ll first need to prep a file which is called “.htaccess” (yeah, it’s a a filename with only an extension, which probably seems weird if you're running Windows). You’ll need to make sure that it exists on your web host and, if not, you’ll need to create a blank version first…

To do that, log in to your web host (such as with ftp or ssh) and check to see if a file called .htaccess exists in your web root (which is the directory on your web host corresponding to the root directory of your domain). And, if the file is already there, you can skip the next sentence. But, if not, no worries — just create a blank version of the file (such as by opening Notepad or TextEdit and immediately saving it without typing anything) and upload that to your web root. And, with the file in place, you’ll need to set its permissions to 666 (which is probably done through the context menu of your ftp client with an option called “permissions” or “chmod”).

After that, you'll need to load the WordPress admin interface (at www.yourdomain.com/wp-admin/) and go to Options -> Permalinks (or just go directly to the URL www.yourdomain.com/wp-admin/options-permalink.php). There, you’ll need to enter what structure you’d like for your permalinks, which most people set to include the link’s date and post name along with an optional prefix directory such as “archives”. That’s a format that I like and if you’d like to use that, just enter this in the Structure field on that page:

/archives/%year%/%monthnum%/%day%/%postname%/

Then, it's just a matter of clicking the submit button on that screen (which, on my WordPress setup reads “Update Permalinks”, but it might read slightly differently on yours). And, if you're running WordPress 1.5, that should be all there is to it. However, if you’re using WordPress 1.2, you may be presented with a block of text for your .htaccess file; in that case, just copy-n-paste that into the empty .htaccess file on your hard drive and upload that to your web root. Either way, WordPress will let you know if this step is necessary — so, if you hit the submit button and you’re not presented with a block of text, then you don’t need to worry about it.

If this didn’t work out for you, I’d first recommend checking that the permissions on your .htaccess file were set correctly. And, if that looks good, I’d check to make sure that your web host offers mod_rewrite (which is the Apache that provides all this permalink goodness). There’s also a section on permalink troubleshooting in the WordPress wiki. But, don’t let this paragraph scare you — chances are, it’ll work just fine :).

Getting strtotime() Errors in WordPress When You Try to Write Pages?

I was getting some odd errors when I tried to write a new Page in WordPress (even though it endedup working). “Pages”, if you aren’t familiar with them, Pages are static pages within your site such as a Contact Me page or an Accessibility Statement. Anyhow, I discovered that if you try to create a new page — and if you're running PHP5 — you get this error:

Warning: strtotime() [function.strtotime]: Called with an empty time parameter. in /home/username/public_html/wordpress/ wp-includes/template-functions-links.php on line 55

There’s a bug report on this issue and it’s already been fixed. Well, it's been fixed in the codebase and it’ll presumably make it into the next release of WordPress (1.51). But if you want the fix now, you can modify edit-page-form.php on your own; it’s just a two-line change and you can copy-n-paste the new lines from the changeset attached to that bug.