Starter Theme vs Parent Theme? Pros and cons

I’m building a theme to be used as an example for other websites for the company I’m working. In another project we used the Hybrid Parent Theme and was really easy to build, but REALLY hard to maintain the website.

I prefer the Starter Theme approach, which another developer copy the theme and create from it. The Parent->Child gives too much freedom for the developer mess the code. For example I didn’t know if something was being called on the child or on the parent.

Read More

I would like to hear from you:

  • When a Parent theme is better?
  • When a Starter Theme is better?
  • What are the pros and cons for each of them?

Thanks.

Related posts

Leave a Reply

3 comments

  1. I totally agree with Rarst. I just want to add some small things.

    Note: I differentiate parent theme and framework. In my answer, I consider parent theme like TwentyEleven where it’s mainly created for a specific website and less hooks than a framework.

    Starter theme:

    Pros

    • Easy to customize at HTML level. I mean something like open <div>, custom CSS class for an specific element. It’s a good way to create a very minimal theme for personal blog where you don’t need many things that parent theme provides (or at least if you use parent theme/framework, you have to hook to remove them). You can also echo special part of HTML like an iframe that refers to another website or just a ‘Hello text’ much more easier than using a parent theme.
    • No need to duplicate template file from parent theme just to change small things.
    • No need to learn something new like hook map, custom syntax, custom functions, etc. Those things are what developers love, but not all users.

    Cons

    • As it’s a starter, you have to do many things to get your theme done: CSS, custom templates, etc. You might don’t want to do that if you’re too lazy!

    Parent theme:

    Pros

    • Has a completed design that you can easily tweak by changing small lines in style.css like changing color, font size, etc.
    • Is a completed theme, meaning you can you it right away without worrying about something like comment template, single page template, etc.
    • Someone has built it for you!

    Cons

    • Parent theme should be consider as good if it mostly matches your requirements, so you can tweak it as less as possible. Otherwise it’s a nightmare
    • The ability of customizing is not too high. I don’t mean the hook system that you can see in frameworks here (see frameworks below). If you want to strongly customize it, you have to rewrite most template files – which means you’re recreating the theme, and that’s not the purpose of using parent theme.

    Framework:

    Pros

    • Everything is available: framework is often made as a all-in-one solution, so it has a great ability to create any type of websites. You need custom logo? color picker? drag & drop? theme layout? … you already have them in your hand.
    • Build website faster if you’re familiar with it
    • Has a complete hook system that allow users to hook in many place to change many things that framework provides
    • High level of customization: not only in hook system, but many frameworks like Catalyst, Headway give you ability to customize almost every elements right in the admin without touching CSS or hook.

    Cons

    • User has to learn the framework (hook system, get familiar with its features, settings, even new terminology) to use it efficiently. I consider this as the biggest disadvantage of framework because WP already has many things to learn, and not all users want to learn a new thing just to use WP better. Those things are what developers love, but not all users. Users are people who just use, not learn & customize.
    • Redundant code: Some parts of the frameworks are coincident with WP features which causes the duplication. Example can be genesis_meta() (not needed as we have wp_head).
    • Performance: because frameworks has everything needed => it has to load all needed files for admin/frontend that you might don’t use at all. For this point, I prefer the way Hybrid Core loads its files (by using require_if_theme_supports function)
    • The default look is often minimal and bad. We have to work much to make the design done. The process is similar if you’re using a starter theme, but you use hooks instead of custom templates like in starter themes.
    • Framework has its own philosophy that leads to different ways to build frameworks => leads to many frameworks => we don’t know which one is best for us (specially when they’re premium). That’s not too good, because as I said above, framework is good for developers, and developers need to look deeply into the code to see how it’s good! If framework is premium, that door is looked!

    Last thing: all starter theme & parent theme & framework can be used for any site if it’s easy for you to customize to achieve the final result. There’s not one solution for all situations. We have to pick which one can help us most, maybe this time the starter theme is good, but in another time – a framework. By the way, working with all of them can give us much experience that help us in many situations, not only when creating themes!

  2. Theme workflow balance is combination of several factors:

    • amount of code, individual to sites
    • amount of code, shared between sites
    • incorporating upstream changes

    Each of these can be important and each of these can be unimportant.

    Parent theme model satisfies all of these reasonably well, but not very well. You get clear separation of shared and individual code, as well as straightforward upstream updates (if using third party parent theme). It start to come apart when any requirements gets larger than usual – a lot of individual code or a lot of shared code that can’t be easily mixed in third party parent theme.

    Starter theme on other hand is very specialized model. It favors individual site, but disfavors upstream changes and shared code. As soon as you make starter theme your own – all burden of moving code in and out of it is on you.

    The newer trend is separating frameworks into plugin-like component rather than them running parent theme completely. If you are acquainted with Hybrid as parent theme look into Hybrid Core. This approach is essentially improvement on top of parent/child with upstream updates made easier by being limited to framework and not whole theme.

    In a nutshell (gets a little subjective here):

    • starter fits individual sites
    • parent/child fits multiple sites with not much customization
    • framework/parent/child can adapt to anything and everything, but is also more involved to develop
  3. The main reason to use parent themes is to allow for easier updates – if you just take a theme and edit it directly, then if the original theme gets updated, then you have to reapply any changes you made (or merge the changes in the original back into your modified theme).