Justin Tadlock

The slippery slope dilemma: How much control should users have?

When creating WordPress themes, there’s a lot of thought that goes into every aspect of the theme. What fonts should be used? What should the overall structure look like? What color scheme best suits the theme? And the list goes on.

Many of us dive into the theme-designing world because we like the creation process and want to bring our unique skills to the table.

This is all well and good until a user asks the question: “How do I change the color of all the headers?” Or, some other similar question. Eventually, it’s no longer the original theme. It’s beyond the creator’s original vision.

While an end user may make something even greater (Don’t you love open source?), many times, theme designers are in utter shock at what has been done to their themes. Don’t get me wrong; I’ve seen some modifications to my own themes that put my original designs to shame.

Conceptualizing the Average Joe WordPress theme

When I originally released Structure back in 2007, there were not many themes around that gave end users theme options. Most of them forced users to dive into the code. There were definitely pros and cons to giving users options, but I figured I’d see what would happen when creating an options panel.

It was a huge success.

I’ve been hinting to a few users and people in the WordPress community that I would be releasing a theme that gives users more control right from their WordPress dashboard. Basically, the ideas I have would make all my other themes with design choices seem insignificant at best. I’m imagining something that would make sure most users wouldn’t have to touch code. Of course, it’s impossible to keep all users from doing so.

I’m treading carefully. And with good reason.

The slippery slope of giving users choices

Designers usually have a vision of what the end product should look like, how their creation should be used, how to best maximize a site’s potential. When designing themes for the general public and mass use, this conflicts with what the users have in mind.

The problem is finding a balance.

Let’s suppose you created a simple blog theme for WordPress. On your theme options page is a select box for choosing the font for all headers. Let’s suppose those choices are Arial, Georgia, Times New Roman, and Verdana.

What do you think the first question will be regarding theme options for your theme?

  1. Are you planning on implementing more options?
  2. Can we have more font-family choices?
  3. Why can’t we change the body font?

I can almost guarantee it will be one of those three questions. So, being the friendly theme designer that you are, you add in more theme options in your next release. You give users more fonts to choose from and the ability to change the body font.

Great! Everyone’s happy now, right? The slippery slope doesn’t actually end here.

  1. Will you implement an option to change the font size?
  2. Can we have an option to change the text color?
  3. Why is there not an option to just change widget titles?

It’s not that the end users are wrong in asking these questions and wanting something that’s easy to use. It’s simply that it’s a slippery slope to go down as a theme designer, and it’s extremely tough to stop.

Another theme of mine, Options, ran into the slippery slope dilemma. There were too many options, and users only wanted more control. The theme was created to keep users from having to edit code, but it never stopped anyone from wanting to make something completely custom that wasn’t allowed from the theme options page.

CSS gives you no limits. There is, quite literally, nothing you can’t accomplish. There’s no way to account for every possible situation in the theme backend. If users want complete control, there’s no choice but to learn a little something about how CSS and XHTML work.

Should design-related options ever be included on the theme settings page?

If so, where do you draw the line? At the number of columns available? Fonts? Colors?

Where do I go from here?

I’ve asked this question before — What would you add to a theme options page? It’s a tough question to answer in terms of design.

There is no way to allow full design control within the WordPress dashboard. It’s impossible to make enough checkboxes, select boxes, and inputs to satisfy every situation. I’m at a crossroads. I want to create the Average Joe theme, but the designer in me tells me that it can be a tough path to travel.

Ideally, I would like to separate my theme users into two distinct groups:

  1. Those that don’t mind editing code should use the Hybrid theme or one of its child themes.
  2. Those that will never edit code should use the Average Joe theme.

Of course, it’s not that simple. The Average Joe theme would undoubtedly run into the slippery slope problem, and some users would still have to edit code.

Thoughts?