WordPress Design Issues
A good portion of the jobs I do are WordPress Design jobs. In working with WordPress Design, there are a few things I’ve learned that are peculiar to working with wordpress.
First and foremost, certain negative margin layouts are a nightmare in WordPress, particularly Ryan Brill’s layout that is written up on A List Apart. The Jello layouts from Position Is Everything don’t fare well either. I’ve tried to nail down what it is about these negative margin source ordered layouts that make them bork only when used with wordpress, but quite frankly the time investment involved in the detective work hasn’t been worth it when there are other, simpler, layouts that work well, though they aren’t source ordered. This problem surfaced with the advent of WordPress 2.0, and appears to be related to the advent of the availability of widget functionality, though you don’t need to be using widgets for this to be a problem, nor does widget functionality need to be hardwired into the theme. It also only surfaces when Links or Archives are included in the sidebars, and seems to be related to clearing, so that’s how much it’s been narrowed down.
One of the other issues with designing for WordPress is one that is also potentially an issue with any program where the info is dynamically fed in. Using horizontal menus in WordPress is not a good idea for two reasons. Firstly, unless there are only a few links you may have issues with text resizing. Secondly, because of that limitation and because clients usually forget when you tell them this, what happens is they add that ONE EXTRA page or category or whatever that adds that one excess link to the horizontal menu that will then bork either the layout entirely or the menu itself. It’s just too easy to grow a site when it’s dynamic, and most horizontal menus just don’t grow well. It’s possible to design horizontal menus to grow gracefully, but they’re not as fabulous to look at and not the ones clients like.
When widget functionality is added, another crop of issues comes up. One is related to text widgets. If you wish to use these in your sidebar and the h2 headers are styled with background color or an image, then you MUST add text in the headline or what you get is an empty h2 tag generated by the program and the background or image showing with NO headline text there. There is no way to stop the generation of that h2 tag without hacking the widget (which involves a core hack in versions 2.2+.)
Another issue with widgets is that in adding the flexibility to the sidebars you lose another sort of flexibility– custom template tags. If, for instance, you use a form that returns people to a thank you page, and you’ve used WordPress “Pages” to create the thank you page, using a custom template tag you can exclude that thank you page from the “Pages” menu, but with widgets you can’t do so, you’ll only ever get a “stock” Pages call using widgets. There are other situations where this may also come into play, particularly with sites that use categories in unusual ways, or wish to call link categories individually, and place them in certain ways.
These widget issues mean that with some sites that have special needs it’s actually better to hardcode the sidebars rather than using widgets.
Most of the free WordPress Themes for download that are available out on the web ignore most of these issues. This is why, if your site is a business site, it’s important that you look beyond freely available themes, and consider a professionally done Custom WordPress Design. Does your WordPress Site need a better theme than what you have now? Does your site fall into one of the problem categories above? Talk to me.
[tags]WordPress Design, WordPress Themes, WordPress Site[/tags]


July 6th, 2007 at 12:39 pm
Hey, i think as of 2.2.1, the text widget does not show empty headers anymore. I actually hacked the text widget to create my own one earlier to get rid of that header, but its done in 2.2.1
July 15th, 2007 at 7:17 am
You’re right, it is fixed in the text widget. But it’s not in the Calendar widget (why do you need a title for a CALENDAR???)