WordPressI am starting to believe that the days of the fast and easy WordPress upgrade have come to an end. Version 2.0 brought some problems for upgraders. Version 2.1 seemed to bring even more due to some database changes breaking certain themes and plugins.

The 2.0 upgrade went very smoothly for me. 2.1 did not. My theme had some db calls to fetch page links using post_status='static' which no longer worked after the database changes. Calling them with post_type='page' instead fixed the problem quite easily, but it took a while of troubleshooting before figuring that out. The 2.2 upgrade was the worst yet.

After having trouble with the 2.1 upgrade, I decided to follow the upgrade instructions for a change and turn off all of my plugins. I have never done that before and have never had a problem because of not doing it. This time, after uploading the new files and running the database update script, I was greeted a by a PHP fatal error message in place of my website. Pretty. This was due to the call in my header.php file to the Ultimate Tag Warrior plugin, which was not activated. No problem. Easy to fix. Comment out the UTW code in the header.

I started reactivating plugins one by one and then testing to make sure nothing went wrong. Everything was going smoothly until activating the King Categories widget. Another fatal error. This time, I emptied the active_plugins field from the bee_options table and tried again with the same result. It occurred to me later that I probably could have just renamed the widget instead of messing with the db, but why do things the easy way when you take the scenic route?

I gave up on the King widget and instead downloaded and installed Breukie’s Categories widget. This worked fine except that every time I made a change to the widget in the admin section, it would forget my exluded categories, so I had to reset them every time. Too annoying.

I was about to hard code the categories into my sidebar just below the hard coded search form and above the widget test statement when I discovered my new favorite widget, the Executable PHP widget, while reading Aaron Brazell’s 10 Things You Should Know About WordPress 2.2. It was also in this article that I was notified of a workaround by Ryan Boren for this widget that is required if you want to use more than one PHP widget in wordpress 2.2. This widget rocks! Endless possibilities. I used to use the King Text widget to include PHP in widgets, but was too afraid to activate it after the trouble with King Categories. I created 3 execPHP widgets to replace the King Categories widget, a King Text widget, and one to add my RSS links. I am not sure why I didn’t just use plain HTML in a text widget for that last one. Never even occurred to me. Finally my sidebar was back to normal.

One more thing about widgets in wordpress 2.2. They are built in, so do not try to activate the widgets plugin ten times like I did. It will never work.

There is a very cool new Plugin Sandbox feature in WP 2.2 that evaluates the plugin code on activation for fatal errors and does not activate the plugin if any are found. This kicked in for the widgets plugin, but not for the King widget. I suppose a widget is not technically a plugin. Or is it?

I still love wordpress as much as ever and will always upgrade my own site at first stable release of each new version. There are always changes for the better and bug fixes.

I will no longer be upgrading all of my wordpress sites at first release. It has become almost impossible anyway since the 120-day release schedule has been in effect. Most of them are client sites that I do not want to break or cause to have any downtime beyond uploading the new files. It is not part of any agreement I have to keep sites updated with the latest files, but sometimes I like to throw it in as a freebie for increased security and ease of future upgrades, not to mention access to new features. Now that it is not always a fast and easy job, I will probably only do it at a client’s request and for a fee. It is probably best that I charge for my work anyway!