It’s hard to beat fourteen files and an image folder


Sometimes I think theme frameworks just aren’t a good thing for the end user.

When it comes to the experience with the least friction, the most welcoming to a new user, and the least technically complex, I just don’t see anything beating a simple theme folder with a handful of template files and an image folder. Whether you’re adding something to the theme or just poking around a bit to see what your site’s theme is doing in there, it’s awesome to be able to open up a file called header.php that is, you know, actually representative of your theme’s header.

Not all bad, of course

I’m not saying that I think theme frameworks are bad. They aren’t, at all. But, you have to admit that the mindset they come from is one that’s focused on developers first — even very slightly first — and users second.

Frameworks make development faster and simpler in many cases, but if the end product isn’t a handful of template files in one folder it’s really not best for users.

Heck, I’ve used frameworks quite a bit. I actually really like a lot of things about Genesis, for instance, and don’t mind working on projects where it’s the required framework. It works great for me in a lot of ways. But I can’t help but think it doesn’t end up handing the best possible product over to the end user.

…if the end product isn’t a handful of template files in one folder it’s really not best for users.

Here’s the simplest way to illustrate what I’m talking about. Opening up Twenty Ten, Eleven, Twelve, and Thirteen will all give you a similar greeting: somewhere around fifteen files, a stylesheet, and maybe an asset folder or two. Once you’ve opened up one of them, within reason, you know what will greet you the next time. And this is true of many, if not most, WordPress themes.

For a theme built using a framework, let’s say as a child theme which is a pretty popular way to go nowadays. Their theme folder might just contain functions.php and style.css files. If they are looking to tweak something about their theme, or learn a bit about how they might do that, they have a heckuva longer way to go than if they opened up a theme full of template files.

If a hypothetical user want to modify the way their category pages display, or at least look at the template to see where a certain phrase or heading is generated, in one case they’ll find a category.php or archive.php file. I bet they’ll look into that one. In the other, more complicated situation, I’m not sure what they would do next.

Best of both worlds

I’ve talked before about the different between a framework theme and what I consider a starter theme, but they are the type of theme I’m likely to start a site with if I have the choice.

After fooling around with Kubrick — and who didn’t way back when? — I remember working with Sandbox for nearly every WordPress website I made. It was nothing I didn’t need, but a lot of stuff that I found really useful. It even had stuff in it that eventually found its way into core WordPress template functions, which is about the best compliment I can imagine a WordPress theme receiving.

The next starter theme that really jumps out at me is WP Framework, by Ptah Dunbar. It was slightly more complex, in the sense that it contained a framework folder that provided some fancy functions to the rest of the theme. Really, looking back at it now, it was just a /library/ folder in hyperdrive.

For the last year or so I’ve been using Underscores, the starter theme built by Automattic and a handful of contributors. It’s one of the better options I know of right now when it comes to clean, efficient, out-of-the-way themes. Every site I build begins with it.

And one to think on

I realize this isn’t the most groundbreaking thing to write up and say. But it’s something I’ve been thinking about recently, particularly when building within different framework projects. And hey, I’ve got to come back and start writing with something, right? This seemed about as good a topic as anything else.

There’s usually a decent amount of discussion around the dashboard side of usability with themes, and I’ve definitely participated in those in the past. But how often do we really think about the file structure and code complexity of our themes, and what a new user looking to go digging around might find?

For a user looking into a framework-built theme, they will likely be peeking into a folder that looks very different than what we saw tearing into Kubrick years ago. Maybe that’s a good thing, but I’m not so sure it is.

33 thoughts on “It’s hard to beat fourteen files and an image folder

  1. I don’t why one way or the other may be better or harder to go for new users/ average users.

    When I was a newbie in WP world back in 2006/2007 Kubrick & Co. were hard for me to understand and to modify, so I didn’t tweak any major stuff.

    Since I am a Genesis user and developer for several years now I won’t say it’s harder to change stuff than on the Twenty… theme series. It’s just different, not harder or better. (Yes, for me personally Genesis is better & easier, but that is not the point here!)

    And I would always say to the new/average user to use a child theme to modify these Twenty…/_s/whatever-automattic-themes. So then, in the end, we have to educate users on how to achieve their stuff. And, they have to be willing to learn something new, no matter if for Twenty Twelve or Genesis (the child theme, Simple Hooks plugin or hooks/filters in general).

    • Definitely agreed on using child themes to modify themes. But I still remember spending time looking through template files to understand how things work, and having the files there that have a direct relationship — what’s in the template file shows up on the screen — was useful to me.

  2. I don’t think there is a right or wrong answer. There will always be *many* users who never want to see a line of code. Ever. So a framework like Genesis gives them enough flexibility to do what they want, but not so much that they end up getting overwhelmed. The average user isn’t going to be making heavy modifications or building from scratch.

    For those who do like to get their hands dirty, I’ve found a framework can give them an idea of how pieces interact with each other, but eventually moving on to a stand-alone theme is beneficial for leaning. Myself, I prefer to roll my own with *blank* files a lot, but again, that’s me.

  3. This is exactly the right note to come back on…well, for me, at least. I’ve been thinking this over a lot as I work on my new portfolio site. I’ve used a few starter themes (Thematic, Underscores) on various client sites over the years and am now using Slim Starkers ( as my jumping off point for theme development, but have recently been diving deep in an exploration of WP frameworks because I had the sense that I might be missing out on something.

    I’ve tried to convince myself to learn and commit to a framework, but I just can’t get over the feeling that for me–as someone who does write code–they’re all a bit bloated. Any time I’m including features or functionality that aren’t necessary in the final theme–or, worse yet, undoing those features/functionality or the default CSS–that just feels like wasted energy to me.

    For those of you who do write code and use and love a framework, do they really cut down on your dev time? Is there a benefit to you or just to your end users/clients?

  4. Honest question: Does the average user spend any time looking into the files and folders that make up their theme? How much of their experience with themes is limited to what they see in the dashboard or theme repository?

    I agree that fourteen files and an image folder (which should be a song to the tune of “Erie Canal“) is ideal for someone new to theme development. They should learn that first before stepping up to starter themes and frameworks. But users can carry on working with WordPress without ever touching anything under the hood. 🙂

  5. For all the reasons you state, theme frameworks are not good for end users/customers/etc. The real benefit a theme framework provides is a way to manage development on 25,50,75,100+ themes simultaneously.

    The frameworks are really for the companies making themes more so than the customers using them.

    • I experienced just the opposite.
      In Germany I know a lot of users that run their site with Genesis child themes just because they like how easy it is. These users are not clients of me, I just came to know about them because they use Genesis and/or one of my translations for it.

      These kinf of users doesn’t care about dev stuff and dev lingo. They want results and not tweak their theme all day. A lot of these users tried other more traditional themes before but wasn’t satisfied.

      Another benefit of Genesis and some other frameworks is, that users can easily change their “skin” – without any hassles. And they do that a lot. With other traditional themes it’s more complicated, as still, a lot of users don’t use child themes for these themes. With Genesis or other products child themes are essential from start.

      So to say such frameworks were only for companies, is misleading IMHO. Yes, they are awesome for companies/agencies but also for one-man businesses (like me) or just the “end user” – all of those groups could benefit from it.

      • I’m not saying that Genesis themes as a whole are less user friendly (they’re great; I love them), I’m saying that the framework makes it harder for devs to dig into the code.

        The fact that the theme uses a framework is, as you said, irrelevant to most users. The framework hinders some devs trying to tweak the theme, but it does make Studiopress’ job of maintaining many many themes easier. And I suppose indirectly that leads to a better product for end users. So I think using a framework is the right choice for Studiopress and others.

        But if the question is “is a theme built on a framework easier for developers to customize than one built like Twenty Twelve”, the answer is that the non-framework theme will be easier to customize for most people in most cases.

  6. You speak of this “user”, but then say that they want to customise something. As soon as they do that, they’re at least part developer, at which point you want to make things as easy as possible for them.

    If you’re a driver, but you want to improve the vehicle, then you’re going to need to know a little bit about how the engine works, at which point, you take on the role or perspective of a mechanic, not a driver.

    As David says, Genesis and similar frameworks are customised differently to opening up a file, editing it, then finding duplicate code elsewhere that also needs updating, but that level of abstraction is what makes those frameworks more powerful.

    As it happens, the action and filter system employed by Genesis and others is used throughout WordPress, so it actually makes things easier – there’s two concepts to learn (actions, filters) and that’s it. No having to look through lots of files and guess which file or files contain the bit that needs editing. It can all be done in functions.php – and having it all in one place, makes the customisations (function + add_* call) pasteable – more than can be said for editing a lot of standalone theme files, which in turn makes writing tutorials for those frameworks considerably easier, and somewhat compatible with other frameworks, since you just attach the function to a different hook.

    Who, professional developer or amateur, wants to be forced to work with 14 files, when they could work with one?

    • Gary, for a non-developer person who is modifying a site, sometimes, 14 files is easier than 1. A lot easier, in fact.

      A non-developer can sometimes even have trouble with if() statements. It’s not something they may have encountered before. Somebody who has used, say, FrontPage to build a website in the past may know HTML and CSS pretty well, but they won’t necessarily know how a for loop works. These programming constructs are not generally used outside of programming spaces, and like it or not, HTML and web design generally does not include them.

      While the notion of one-file-to-rule-them-all appears to programmers who like their if/then and loop structures, the rest of the world doesn’t grasp them. Making a change to a page on their site is easy if they know HTML and can see that the template file is simply a pattern of HTML with some tags in it to insert the various bits. If they want to change something in more than one “place”, like on single post pages as well as archive pages, then having those separated into separate files is easier for the educated layman to grasp than a simple “if (is_single() | is_archive()) {…}” structure.

      Asking a person who has only ever made static HTML sites to then understand actions and filters is just crazy talk. 🙂

      It’s like this, programming is for programmers. And yes, eventually you need to learn it in order to level-up your game and become better at the craft. But you do not have to be a programmer to make webpages, and you haven’t had to be one for a long time. HTML and CSS is the domain of the non-programmer, and while WordPress themes are indeed written in PHP, it is best to write them with an eye towards *avoiding* programming concepts to the extent possible, because the people who want to later customize and modify them are very likely not going to be programmers, and probably not interested in being programmers. They just want to make minor changes to their website. For maximum compatibility, best to accommodate the needs of the user.

      • Further to Otto’s point… we don’t talk about PHP with our novice theme developers. We talk about template tags. Yes, the template tags are PHP, but for someone jumping into this for the first time from building flatfile HTML sites, they don’t need to know that. 😉

      • Otto, I agree with Gary. I give many training about WordPress and Genesis makes things easier even for non-developer. Before I use twentyeleven or twenty as starting point. All the get_template_part and so on are more complex to understand that a well done filter or action made in functions.php. And the mix PHP + HTML in traditional theme is also more complex to understand than some hooks. Genesis is very well documented online about that.

        Last thing, the very powerfull Genesis Widgets (Featured Pages and Post) give some great options especially for an non-developer.

      • In both cases, users have to be willing to learn something new (a syntax, logic etc.), and developers (or whoever) have to be willing to educate them.

        What I mean is the “energy of understanding” – just when it makes “click” by once novice user who becomes then an more “advanced user” so he or she understands the logic behind all that stuff.

        Learning hooks and filters will also help undertand core concepts of WordPress and that helps in general for customizing WordPress (themes, plugins, whatever).

        On the other hand, learning the template tags is in the same way a benefit. But users need also to be educated here, for example why the opening and closing of PHP this often and such things. Only it is used by the default themes and Automattic doesn’t make it automatically a better thing. And only because Genesis has a slightly other approach makes this a bad thing. We all know that. We shouldn’t be speculate about the so-called new users/novice users this much. Every user, every use case, every context is different. That is the thing I know from experience!!!

        We shouldn’t fight these 2 things which one is better or easier, because this cannot be measured right and we cannot speak for all those users out there. For me it also a bit like: that are two different aspects of the same thing in the end.

  7. Another problem is that some of the frameworks or even starter themes become a system within a system. They use WordPress as a core, but invent new/change standard logics of WordPress.

    That’s why I stopped using very popular Roots theme, because even though it is very flexible, etc. but some of the WordPress logics were replaced or even left out. That forces you to become not only WordPress developer, but Roots, or Genesis, or Framework X developer.

    My logic is that starter themes (like underscores does) should build upon WordPress and keep all logics intact, otherwise it creates unnecessary roadblocks.

    • Tomas, I agree entirely. I’m always tempted by Genesis etc, but it takes us away from WordPress logic and when we have something like _s there, I am happier building my starter theme by rolling my own version of that with my own idiosyncracies – but all WordPress based.

      Great article Ryan!

      • > it takes us away from WordPress logic

        Not at all. Using actions and filters is a core principle of WordPress. While it’s called the *Plugin* API in the codex, nothing in the code limits it to just plugins. That means that plugin development and theme development (for framework child themes) take on the same methodology – meaning it’s less learning for any newbie developers to get stuck in to any portion of their site.

      • Genesis takes not away from WordPress logic, just the opposite! Genesis helps users/devs to understand much better what all this hooks & filter concept is about. I am one example for that myself 🙂
        Hooks & filters is core stuff of WP and Genesis just breathes that.

        Also, a page template from a Twenty something theme would also work in Genesis – why not? – it will work! You only have to care about the layout options then if you need them…

        Yes, Genesis has a different approach to a few things but all that is for a reason (mostly the user experience)! And it’s not only a framework loved by developers, just think about that :-).

        If you consider the “_s” theme a framework/parent theme then following your logic – and the logic presentend in this post – may be the easiest for new users, but it’s just not. It is easy for devs and mostly (if not only?) devs use it.

        I am from Germany, and reading in German WP forums about customizing Twenty something themes, that must be a hard thing to achieve, considering all these posts/comments from novice users about just that. A lot of people fail with the use of all these files (14 files is overwhelming for novices!) and template tags and get_template_part and whatsoever. A lot of them gave up and in the end search for a developer who does it for them. Don’t tell those people it is easier with those 14 files concept etc. And, I don’t tell those people Genesis might be easier for them, no, I don’t do that. There have to be steps in between for those people. Take away their fear of this stuff and begin with very simple steps: tweak ONE template tag together with them, or work with them on a little hook or filter function to show them the power of it. Step by step, in the end they should have the knowledge to use both concepts – which are core WP! – to their benefit and are in the position to educate and help others.

        Don’t forget: a novice user must not remain a novice, she or he can become an advanced user or dev at some point. We just shouldn’t fight those 2 concepts on their backs!

  8. Pingback: In Defense of Theme Frameworks

  9. As a beginner I used many blank WordPress themes and now as a developer I’m using Genesis for all of my projects. There is a bit of learning curve, but once you are good with it, the development time can be cut down by half. For me, Framework + Child Theme combo works well.

  10. Pingback: The Weekly WordPress News, Tutorials & Resources Roundup No.35 - WPLift

  11. While your argument is valid. But frameworks make theme designing and customization just more comfortable – specially for beginners and non-geeky audience.

    That is where mass eye-balls are present and who doesn’t like comforts in life be it online or offline.

  12. Ryan says:

    I just don’t see anything beating a simple theme folder with a handful of template files and an image folder.

    Well, that’s exactly what child themes are. All of the abstraction and messy loops are hidden away in the framework, to leave something simple (.css and a .php), which is exactly what Otto wants. Take the Sample Theme for Genesis for instance – – an images folder, demo data file, a screenshot, style sheet, a single functions PHP file and a README.

    Now let’s look at Underscores: 23 PHP files, 7 style sheets, 4 JavaScript files, a POT and a README.

    TwentyThirteen: 31 PHP files, 4 style sheets, 3 JavaScript files, an images folder, a fonts folder, a POT and a README.

    If the number of files alone is supposedly an indication of how easy it is for newbies to get stuck in, as going from Ryan’s quote, then the child themes of frameworks are far less intimidating.

  13. Its significantly easier to customize your WordPress site using Genesis than any other theme.

    On top of the hooks and filters you get an excellent range of theme specific plugins built based on peoples needs, challenges, frustrations and goals. No coding experience needed.

    Genesis makes it so much easier to learn the basics of PHP and CSS coding as well.

    You can pretty much take any code from any of the StudioPress or community child themes and use it in any theme because they’re all built on the same framework.

    Take a look at the files in any default theme like Twenty Ten, Twenty Eleven or Twenty Twelve and compare them to any Genesis child theme and you’ll see what you’ve got to deal with.

    Its generally 2 files you need to work with when using Genesis child themes.

    You never need to touch the Genesis theme framework files, ever.

    underscores may be o.k for advanced users but who provides support for beginners and intermediate level users when they get stuck?

  14. What I’ve always longed for was a development system that allowed me to easily design a new theme, with drag and drop and all the bells and whistles, and then…once I’ve got it looking the way I want it…then I want it to spit out a basic set of files that are simple templates as you describe. I don’t want to give the entire framework to a client because it’s so confusing. I want to just give them a simple theme. What you say makes perfect sense to me. My clients want and need the simplest theme possible, but I, as the developer, want all the bells and whistles from the development and design standpoint. One day, perhaps.

  15. Pingback: Creative Friday: Resources Mashup Roundup #1

  16. Theming in WordPress is really awful. I think Joomla got it right, it’s way easier, and also involves separation of logic and view which is mixed up in the WP world. Someday maybe.

  17. Pingback: On WordPress themes and frameworks : Post Status

Comments are closed.