WordPress Frameworks are a Crutch

WordPress frameworks are a crutch

I don’t just mean theme frameworks (though they also apply). I mean any kind of framework.

  • Genesis (theme framework)
  • Kirki (Customizer framework)
  • Redux (options panel framework)
  • others??

Wait, aren’t these things supposed to make my life EASIER?

Well, yes, but that’s part of the problem. Frameworks like the ones I listed above are “easy mode”. They allow you to create more complicated things in a super easy way. And while that’s not necessarily a problem, it is a problem if you use it as a crutch and don’t actually learn what you’re doing.

Quite often, people just fall into a trap of relying on the framework. They don’t learn how the WordPress settings API works since the framework just does it for them. They don’t learn the underlying code. So, they would be completely lost if they had to edit, change, or add something to the framework’s functionality. They become completely dependant on the framework.

If the framework stops being developed, they’re screwed because they don’t know how to do it on their own.

The next natural step is to find a new framework to switch to, which just repeats the process. These people constantly toe around the underlying issue, which is that they can’t do it themselves.

I’ve been there

In my earlier WordPress days, the settings API seemed so confusing. I wanted to code my own themes, but I felt like I NEEDED a settings panel in order to be successful (I was influenced by Theme Forest), and yet I had no idea how to create one. So, I crawled over to frameworks, like SMOF.

My problem was that I just added SMOF to my code, added my settings, and that was it. I never moved forward. I never actually took a step towards learning what was going on, because I didn’t have to. And my development suffered because of it.

There even came a point where I bundled SMOF with a plugin (which it wasn’t intended to be used with) because I couldn’t code my own options panel well enough. As a result:

  • I had to code weird workarounds to get the features I actually wanted and needed. They were extremely messy and hacky because the framework wasn’t built with that in mind and I didn’t know what I was doing.
  • If I wasn’t able to accomplish something in the framework, I just passed it off as “it couldn’t be done,” when in reality it could be done—just not within the confines of that framework.
  • I never actually learned what was going on under the hood.

Now fast forward a few years and I finally managed to break out of that trap. This happened when SMOF stopped being developed in favour of Redux. Well, I moved to Redux for a while but it was so massively huge and bulky (also kind of awesome, but.. bulky).

As I got more into simple, lean code, I didn’t like packing Redux with my themes. So I finally spent more time doing what I should have done all along:

  • Learned the Customizer API.
  • Read guides and tutorials to figure out the WordPress settings API.
  • Dissected some of my favourite plugins in the WordPress.org repository to figure out how they handled settings.

And what happened after this?

  • My knowledge of how WordPress actually worked skyrocketed.
  • I became a better developer with leaner, cleaner code.
  • I became more familiar with object oriented programming.
  • I suddenly had this mindset that ANYTHING was possible. This stemmed from that first point: I knew how WordPress worked.
  • My custom settings panels had better, smarter features because I knew how to create them in exactly the way I needed them.
  • Because of my solid understanding of WordPress and these APIs, I was able to use frameworks if I wanted to, but this time I was armed with the knowledge of how to customize and change them.

It’s not that you shouldn’t ever use frameworks—you just shouldn’t become dependant on them

Frameworks in themselves aren’t a bad thing. Some of them are awesome and can make your job a lot faster. However, you will become a much better developer if you learn WordPress, have a solid understanding of its APIs, and then use a framework. As opposed to: using a framework because you don’t know how WordPress APIs work and then leaving it at that.

The difference between those is that with the former, you actually have a bunch of knowledge and you use frameworks to speed up your development. With the latter, you use frameworks BECAUSE you don’t have any knowledge and you don’t want to learn. If you use frameworks for that reason, you’re only boxing yourself in and limiting your own skills!

Have you ever used a framework?

Which one? Tell me about your experience with it!

Photo of Ashley
I'm a 27 year old California girl living in England (I fell in love with a Brit!). I like to inject a little #girlpower into the WordPress development community by teaching women how to be coding badasses. more »

Don't miss my next post!

Sign up to get my blog posts sent directly to your inbox (plus exclusive store discounts!).

You might like these

Leave a Reply

(Enter your URL then click here to include a link to one of your blog posts.)

This site uses Akismet to reduce spam. Learn how your comment data is processed.

32 comments

  1. Great, great post, Ashley. I also notice that you’ve written about Theme Frameworks in the past. All excellent stuff πŸ™‚

    In my opinion, one of the biggest limitations with frameworks is the fact that they “abstract” WordPress’ internal features, and replace them with their own. This could also be one of their biggest triumphs.

    It just depends on who is using them, and on how they are being applied.

    Some frameworks, such as Genesis are not exactly “super-easy”, and often require a fair amount of WordPress and PHP knowledge.

    The other problem is that WordPress does not yet have an introductory developer’s documentation. Yes, the codex is there, but for a lot of folks it is difficult to digest its contents. The new “Make” documentation is easier, but still does not offer an entry path for aspiring developers (at least in my opinion).

    The end result of this is that people use, and then rely on frameworks, because it helps them abstract away all the internal WordPress and PHP functions, which they might have had difficulty with.

    Most developers eventually outgrow frameworks (like old shoes), and will seek something more, perhaps even creating their own framework in the process.

    So, frameworks could be a way to attract and retain new WordPress developers, and there’s an argument for that, I think.

    For example, Automattic has its own framework, Thematic, for people who need a theme boiler plate, or just want to quick start a project.

    A wider question would be “when does a framework stop being a framework”, and starts turning into a system of its own?

    Then there’s the other question of what are framework users learning? Is it the framework, or WordPress?

    Depending on the developer, it might well be that they just want the framework, and couldn’t care less for WordPress.

    1. Thanks so much for your thoughts CJ!

      In some cases I have really loved the abstraction that frameworks provide. Sometimes I find that frameworks take a cleaner/better approach than core WordPress. But sometimes that has held me back from actually understanding what’s going on.

      A great example is CMB2 for meta boxes. I use CMB2 a lot and I really love it. I still use it all the time. But, at the same time, I’m also really glad that I took the time to learn how to create meta boxes “manually” with WordPress. There are some cases where CMB2 feels a bit overkill and it’s simpler/cleaner to just use a manual meta box, you know?

      In cases like that, I definitely think it’s helpful to at least know how to do it both ways, even if you still choose to use a framework half the time.

      You make some good points about the codex. It is hard to just sit there and learn it all from scratch. I find it easiest to learn as you go along, in super small chunks. That’s why my own learning/development has been pretty slow over numerous years. It’s not that easy to just sit down and learn all of WordPress in a few days (or even weeks). You have to adapt to it a bit.

      I guess I just think the #1 thing is to never stop learning. Don’t use a framework as an excuse to stop learning how to do things the ‘normal’ way. Use it when you’re starting out to make things easier, but don’t stop there. Find some time to actually learn along the way. And, if you want to go back to frameworks after you’ve learned “the hard way”, go ahead, that’s your decision. But I definitely think it helps to learn the underlying code at some point just to have that knowledge!

  2. When I first moved to WordPress, I just modified the twenty 12 theme. Then realized I should have a child theme, which I had no clue how to do. I was really clueless and just wanted THE BEST WORDPRESS THEME. lol. I ended up getting the genesis framework because they did sound really awesome (their home page is persuasive). Anyways, it was ok using that for a while. It started to get a little annoying because whenever I wanted to make a change, I had to specifically search for genesis solutions on google since I didn’t have access to all the theme files in the child theme.

    I ended up switching to the Underscores starter theme because I didn’t really have time to learn from scratch and didn’t really want to recreate the wheel. I’ve been happy with my theme now. It’s easy to make changes and I slowly learn more about WordPress as I need to make changes.

    Stephanie@ThesePaperHearts recently posted: Review: The Heart of Betrayal
    1. Ugh I’ve had to claw my way around Genesis a few times and I just REALLY don’t like how it’s structured. It’s a completely different system from building a normal WordPress theme.

      Underscores is an awesome starter theme. I like how it follows all the best practices and template hierarchy, but it’s empty enough to give you room to make it your own and move forward.

    1. I’d really love to read your thoughts on Thesis! Especially because they’re actually the centre of a huge drama scandal right now in the WordPress community.

  3. I prefer starter themes and boilerplates to full-blown frameworks, as they have the redundant stuff out of the way (head, body, meta tags, etc) but still give me the freedom to lay down my own back-end foundation. It’s pretty much a given that any web developer *should* know how to build websites without tools like frameworks and CSS preprocessors, but man, do they make life easier. πŸ˜› I think they provide a sort of gateway to someone who wants to learn the concepts of coding. The opportunity is there, but if they meet the blogger’s needs and get the job done, it’s all good.

    What do you think of Rails and Angular? They are both considered frameworks, but Rails especially is an industry standard with respect to Ruby developers.

    Raisa recently posted: Sparkle Box Review: July 2015
    1. I completely agree with you Raisa. I like a good starting point—not the whole package.

      Oh gosh, I adore CSS preprocessors. I definitely do not see those as a crutch. πŸ˜€

      I haven’t used Rails and Agular enough to be able to form an opinion. I don’t have a problem with them though and know they’re commonly used industry standards.

      I think my #1 point here is that you can use frameworks—I don’t have anything against them overall. My one word of caution is that you shouldn’t let the learning stop there. Don’t let frameworks stop you from grasping the bigger picture or the underlying code. Don’t try to confine yourself to a framework because “it’s easy”, especially when the framework doesn’t even let you do exactly want you want/need. Take the time too learn “the hard way” (particularly in regards to WordPress APIs) so you at least have that knowledge and understanding. If you still want to go back to frameworks—go for it. And I guarantee you’ll actually be able to use them better (and maybe extend them in ways you want) now that you have a better knowledge of what they’re doing.

  4. Great post Ashley!

    I’ve disliked frameworks for a long time, they’re so bulky and restrictive. In fact, i thought about writing a post about it but never got around to it! I used Genesis for a site once, and honestly? After searching through the myriad of hooks to do A-N-Y-thing, I could’ve hand-coded it faster.

    I’d go so far to say that if someone is relying on a framework such as Genesis or Thematic, then they’re not a developer. Unfortunately there are a lot of people who’ve built their entire businesses based on frameworks which, from a business POV, is ridiculous (what happens if WordPress up and stops supporting genesis down the line? or if genesis goes out of business?).

    My current workflow involves a skeleton theme with a few personal mods, SASS, a custom grid, and Advanced Custom Fields for my meta fields (I’ve previously hand coded meta fields, but I do like the simplicity and speed that ACF provides). I work a lot in the functions files to create my own widgets, post types and other functional pieces, and therefore keep my installs light on the plugins.

    So yeah. Totally with you on this one!

    Kim recently posted: How to Get Paid
    1. I hate all the hooks in Genesis too Kim! I feel like they don’t even make that much sense from a programming standpoint. They’re meant for you to be able to customize aspects of plugins/themes—not to build an entire theme.

      Actually learning WordPress from scratch just makes so much more sense. It’s so much clearer what you’re actually doing and what’s going on.

      My workflow sounds a lot like yours. I use ACF a lot too—especially in client work. But I’m also glad that I know how to code my own meta boxes, because sometimes if I just want one or two in a certain plugin/theme then it’s a lot cleaner to just code my own. But if I’m doing some bigger stuff, then ACF is a wonderful tool.

      Overall I think it’s important to know how to do things both ways. When you’re armed with that knowledge, you can make more informed decisions and it will make you a better developer. πŸ™‚

    1. Actually no, you’re not using Genesis. πŸ™‚ You’re using a theme called North by Array Themes—I’m a big fan of their work!

      Coding is actually my favourite part of blogging. Quite often I spend more time coding cool/interesting features for my blog than the actual blogging itself!

  5. Great article! It’s so nice to see a developer who *doesn’t* try to push Genesis or another of the frameworks as if they are the perfect solution for everyone. I’m just starting out in theme development for WordPress and the whole thing is very intimidating, but I hate the idea of not being able to child theme a Genesis theme. No matter the theme, there’s always something small I want to go in and tinker with.

    As a newbie theme developer, what resources would you point me to for learning to do things the right way? I’m trying to study the codex but that’s pretty dense for me.

    Thanks again for taking a stand!

    1. Thank you Erin!

      The Codex is very helpful, but I think it’s easier to use it as a resource when you want to know what a specific thing does. For example, you come across a WordPress function like the_title() and you want to know what it does, so you use the Codex to learn how to figure that out. That’s what it’s most useful for.

      But I think it will be very overwhelming if you just use the Codex as a general guide to theme development.

      I would suggest looking at and downloading Automattic’s Underscores starter theme. It’s a super simple theme that’s supposed to be used as a starting point. So it’s not a framework or a parent theme. You’re meant to use this as the foundation for a custom theme and build upon it.

      Download that, install it onto a WordPress test site, and just play around a little. You can use the codex to look up functions that you’re not sure of to get a better understanding of how all the pieces fit together. πŸ™‚

    1. I think it’ll be super beneficial for you to have an understanding of all the core WordPress functions and code. πŸ™‚ It’ll help you realize exactly how a theme is put together. Hooks and filters via Genesis don’t really help you understand how things are done or how they actually get pieced together, as it’s all (or mostly) done via a functions.php file. But when you see how the actual templates get stitched together, I think that actually makes more sense. πŸ™‚

  6. This post is a little over my head and just reminds me how much there is to learn! Blogging takes up so much of my time I haven’t been able to learn as much about WordPress as I want. I figure I’ll just pick some stuff up as I go haha. You make coding sound so fun and I look forward to learning more one day. I totally appreciate one of the comments you made above about the codex – I’ve definitely attempted to read it as a manual and that was no fun! πŸ˜›

    Jade @ Bedtime Bookworm recently posted: Chasing Ravens by Jessica E Paige
    1. Coding is a ton of fun! It’s so empowering to be able to totally code and manage your own site. πŸ™‚ I love imagining an awesome feature and being able to implement it myself.

  7. Awesome post!! I’ve always told myself I want to learn to build custom themes and sites from scratch with WordPress. While frameworks are super handy and helpful for the most part, you can become dependent. Ultimately I really want to create lean, fast, clean code sites that are truly custom. Do you happen to have any great sources for that? Learning truly custom theme design with WP and also can recommend some good sources for getting started.

    As well, what are your thoughts on stuff like Underscores theme? (and what comment/post rating plugin is used here? Oh and last question (sorry I know I have tons!), do you offer your CW Mail plugin for downloads, is it something like MyMail or MailPoet?

    1. It’s great to know that you’re on the same page! I absolutely love your goal to create lean, fast, clean code sites. Good for you!

      Underscores is a great learning resource. It’s a perfect example of a clean, clean, well-coded theme. It’s meant to be used as a starting point or an example of how to code a theme from scratch well. It comes with minimal CSS so if you were to install the theme on its own, it would be basically naked.

      I use the same system and methods that you see in Underscores when creating my own themes, but I don’t actually start using Underscores from scratch each time.

      I think the best thing to do is to use Underscores as a guide to create your own starter theme that works for you. For example, I have certain functions that aren’t in Underscores that I use in most themes, so those functions are included in my own starter theme.

      If you don’t have any experience with building a theme from scratch, you could check out my e-course Make Your Own WordPress Theme.

      But if you do already have experience, then you might be above that level and the course won’t benefit you. If that’s the case, I suggest jumping right into Underscores. You can either:

      1) Download it and use it as a starting point to build a theme.

      2) Start building your own theme from scratch and reference Underscores as you go.

      If you already know where you want to go with your theme, I find it easier to do #2. If you’re not so sure and just want to play around, #1 might be easier.

      The post rating thing is something I coded myself, so it’s not available as a plugin. πŸ™‚ I’m afraid I don’t have CW Mail for download. I was going to, until Mandrill (which is what sends out the emails) raised their prices to a minimum flat fee of $9.95 per month. Then people naturally lost interest in it, so I lost interest in finishing and releasing the “public version”.

      1. Oh awesome, I’ll definitely check out the course and see if it’s a fit for me. I haven’t really built anything from scratch yet, so I guess it should be. Also, you’re way too cool, building out all these awesome plugins! Bummer the CW Mail won’t see public view, I’m sure it would have been something I could really use for emails.

        And yeh I have some ideas of where I want my theme, how it should function, look, feel and behave plus ideally having custom post types etc lol. So I would definitely look into Underscores as well.

        Does your course offer a preview video by chance? Or is the course all text based? Or if no videos at all, does it offer photos and links to demos?

        Sasha-Shae recently posted: Being Woman
        1. whoops, completely forgot to also ask, for your course, it’s all from scratch and not based on underscores? And with doing the course, can we learn to build out a fully functioning ready to use theme?

        2. The course is all text and code based. Each coding lesson (there are a few theory ones at the beginning) works on building out part of the theme. I go over every single piece of code and explain what it does. At the end of those lessons, I provide the current WIP theme files so you can download them to check your process, etc.

          By the end, you will have a fully functioning WordPress theme, and you can download the final theme.

          There’s also a bonus/advanced lesson where we quickly go over integrating Bootstrap with a custom theme. So that gives you some good insight into integrating a HTML/CSS based framework.

          Everything in the course is 100% from scratch. I don’t use Underscores. Though after the course you should have enough knowledge of how PHP and WordPress work to jump into using Underscores if that’s what you want to do. πŸ™‚

  8. Hey there!
    Great post there… As the developer of the Kirki Toolkit I fully agree with you. Frameworks are bad because they hold people back from learning things.

    However, there’s another way to look at this too…
    Allow me to share my personal experience and how things like that usually come to be:
    I never intended to create a “framework” for example… I was just building a lot of themes and sites for customers. At some point I found myself repeating the same things over and over again!
    I was building the same controls every time and had built myself a library of snippets & things I was just using constantly.
    Maintaining them in all the client sites and project was a nightmare, so at some point after (literally) hundreds of coding hours, it just became more convenient for myself to abstract it and build something I would be able to use without any hassle.
    That something was put on github and people seemed to like it. In time they started improving, contributing their ideas and code back to the project. It’s the power and momentum of opensource! After a while I decided to make my life even easier and bundled them all together as a plugin on wordpress.org so I could just update it on all client sites and be done with the maintenance nightmare.
    (btw I never liked frameworks either, that’s why I keep insisting that Kirki is not a framework but a toolkit).

    I believe that it is our responsibility to educate users on how to properly use the WordPress APIs and we should all write more on our docs about how NOT to use our frameworks.

    That being said, it just depends on the use-case.
    IF for example someone really knows their code, they can choose to use a “framework” because it just makes sense.
    If you want to build a project that will need 90% of the functionality that Redux or Kirki have, than you have the following choices:
    1. Custom-coding everything just the way you like it
    2. Get a “framework”, chop it up and keep the bits and pieces you like, creating something semi-custom
    3. Use a “framework”.

    If you can custom-code everything then that’s definitely the way to go, provided of course you can do a better job than the frameworks. If not, then you can go to option 2 which will mean that you’re gonna take bits and pieces from the framework controls and structure for example, and then adapt them to your own code.
    Finally, if you choose to go the framework route then you have some benefits…
    The main benefit of course is low maintenance:
    These things get updated really often and keep improving because they are not just maintained by a single person but from lots and lots of developers.
    The more people use a project the more contributions it has, the more people test it and report bugs, and finally any existing bugs (that will probably go unnoticed in a 1-person project) will be squashed.
    So maintaining it in your own project will not require any debugging or hassle… You’ll just have to update the plugin files inside your project!
    Their downside of course is unused code. You’ll rarely need 100% of the code they have to offer… But most times (if the developer has done a good job) it’s pretty easy to de-couple things and keep just the parts you want and need.
    If for example you only need a good-looking slider control for the customizer then of course you’re not gonna use a framework… But if you have a project with 900 fields of all kinds and sizes in the customizer then yeah… using a framework kinda makes sense! πŸ™‚

    Frameworks are not meant to be used by people who don’t know how to code and look for an easy way out.
    Frameworks are meant to be used by people who know how to code and choose to use a framework because it suits their needs for a particular project.

    1. I totally agree with everything you’ve said here!

      I think frameworks are a crutch if you ONLY learn the framework and don’t move beyond that.

      But if you KNOW how to code from scratch, then frameworks can be incredibly helpful.

      I simply believe that if you use frameworks, then you should also have the knowledge to do it from scratch as well, because having that knowledge will actually allow you to use the framework better and have a more solid understanding of what it’s even doing.

      When I first started with WordPress, I only used frameworks. As a result, I could only do what the framework gave me. I was stuck. I didn’t know WordPress—I knew the framework.

      Eventually, I went out and learned how to do it from scratch. That doesn’t mean I do it from scratch every time now, but having that knowledge made me a better coder and helped me understand the frameworks even better.

      I then went on to make my own settings panel framework that I use to help speed up the plugin development process.

      I also use Advanced Custom Fields Pro for nearly all my client projects because it’s better and faster than coding tons of meta boxes from scratch.

      So yes, I believe in frameworks. I believe it makes sense to use them to speed up development. I just also believe that before you use a framework, you should have the knowledge to do it from scratch. That will actually help you have a better background, understanding, and could even help you EXTEND the framework if necessary.

      So I love what you said here:

      Frameworks are not meant to be used by people who don’t know how to code and look for an easy way out.
      Frameworks are meant to be used by people who know how to code and choose to use a framework because it suits their needs for a particular project.

      My post was really geared towards that first sentence. I see a lot of people who use frameworks BECAUSE they don’t now how to code and using a framework is easier. I think that’s when it becomes a crutch and actually limits you as a developer.

      Thanks so much for chiming in!

  9. When I was first getting started, I used Thesis because someone told me to. And it was wonderful, until it went to 2.0 and required you to know hooks and stuff. (Which I still don’t quite understand.) Totally blew up my site.

    So then I went with Genesis, because I found a cute theme and it said it needed Genesis to work. That’s been okay, but as I’ve grown in skills, I find I can’t tweak it as much as I want.

    So now I’m trying to go back to basics and do what you saidβ€”to finally learn how WP works, and move to cleaner code that I develop myself. I’m still a long way from that, but that’s my goal.

    Karlene recently posted: Brand Building Made Easy
    1. Good luck Karlene! I think learning the core part of WordPress will give you a much better understanding of how things work, even if you go back to using frameworks later. πŸ™‚

  10. Great post and comments. The latter show why I do need Genesis currently. It’s tough to get everything going, I haven’t even launched the website yet but it is in coming-soon mode still, and while I’m grasping the general zest of the commentary, some of it goes way past my head.

    I need help with SEO, security and such, as I feel I can concentrate on what matters the most, creating content and products. Someone else can take care of at least a bit of the work when I’m still learning about CSS in particular. HTML doesn’t freak me out like it used to, but CSS is still up there somewhere to master (perhaps never).

    Maybe one day I will end up feeling like a framework is a hindrance rather than a help, though. I have two other websites that need to move from dot-com to dot-org soon, and I outgrew com after having used it for years.

    In particular if you want to be a business rather than blogger only, org is the way to go (integrated web shop among others), but stepping from com can be quite a project with its huge learning curve. It wouldn’t surprise me if I woke up one day feeling like I need more control, because apart from the financial aspect (I’m unemployed now), it’s for a reason that I’ve chosen increasing customisation options. The nice child theme I have also comes with its own restrictions that I want to tweak to better suit my desired look and functionality, so already there I see CSS opportunities galore.

    There’s just so much to learn and to avoid feeling overwhelmed, panicky, stuck, and completely unproductive, for me Genesis is like sent from a better place. This doesn’t stop me from wanting to learn more, though, but I learn better when feeling there’s room to breathe and I can test code at my own pace rather than “fix it right now or your website will die”-ish.

  11. I agree with you 1000% on this! I used to rely heavily on frameworks and premium themes thinking it would save development time for clients, but I was very wrong. Learning to code properly and coming up with my own micro-frameworks not only saved me tons of time but also gave me a total freedom in my development work. I am no longer bound to the limitation and roadblocks those frameworks/premium themes force on me. It’s so worth learning to code.

Recent Posts

    Random Posts