13 Comments

  1. Márcio Duarte
    · Reply

    Another great online resource for people interested in building themes for the new editor is the live Q&A hosted by Birgit Pauli-Haack, last year. It can be reached at https://gutenbergtimes.com/live-q-a-block-based-themes-for-full-site-editing-feature-in-wordpress/.

    By the way, the Gutenberg Times website, as well as the newsletter and videos, are very valuable for anyone interested in following the evolution of the block editor more closely. Highly recommended.

    Report

  2. Steven Stern
    · Reply

    I started out using Thesis, but quickly realized I was learning to code Thesis stuff, not WP. I then switched to the Underscores (_s) theme. Building from _s made me dig into WP best practices and coding styles and gave me a sparse, working theme. I continued with _s until my retirement.

    Report

  3. Mark
    · Reply

    Thanks for this Justin. An excellent article. I did leave something out of my question which was how to make the jump from basic theme development to creating premium themes? Are there any resources like this? For instance, control panels, meta boxes, adding page buiders etc. I have found plenty of basic resources but it is a bit of a patch work that you have to combine to create the outcomes you are seeking. I do get that it is a bit of a trial and error proposition.

    Report

    • Justin Tadlock
      · Reply

      I don’t know if there is a one-stop solution for more advanced topics. There are really infinite things you can do, so nothing will ever be perfect in that regard.

      If you want to build theme options, you’ll need the Customize API. It can be limiting, and to do more complex things, you’ll need to build custom controls from scratch or use something like the Kirby Framework. And, there are really some advanced things that are simply not documented.

      For meta boxes, there is the meta box docs. But, there is no real form fields API behind it. So, you’d be custom coding all of that. Of course, there are frameworks/libraries like Advanced Custom Fields and Meta Box too that have a lot of pre-built things.

      But, you are right about the more advanced stuff being a bit more patchwork. Over the years, WordPress has continued to add new APIs, particularly for forms, so developers end up having to learn completely different systems to do something as basic as an <input> field. The block system is slowly changing that, bringing together different pieces. However, it’ll be a while before we have a holistic system.

      Report

  4. Rob Ruiz
    · Reply

    Starting with a boilerplate or starter theme is good. Using a theme dev framework like WP Rig is even better.

    Report

  5. David Chandra
    · Reply

    This is 100% true:
    It is learned through sheer force of will, fueled by some innate passion within you that wants to see a project through. It is frustrating, but you keep going because you are having fun.

    I actually started a YouTube channel several months ago, and I created several videos about theme development. (but all in Indonesian)

    first part:

    Report

  6. Gary Taylor
    · Reply

    Great article Justin (and you have the t-shirt on this one, of course).

    One other thing to consider is why you’re building this theme and where it is to be deployed. The theme on my current site is a mish-mash of Automattic themes; but as the theme is only for my site I pulled out all the code to do with the Customiser and anything else I didn’t need such as some styles and Page templates.

    On the other hand, I’m just revising by sister’s home baking business site, which uses a child theme of a theme by Anders Noren. Here I’ve left the parent theme intact in case she asks for something it can deliver. Like all the other themes on wordpress.org and .com Anders’s theme are customisable by the end user, so you’ll need to include that functionality of you’re thinking of selling or submitting it.

    Report

  7. Ryan Hellyer
    · Reply

    Excellent post! Most advice I see on theme development is absolutely horrendous.

    My advice to newcomers is to focus on the basics. Most new folk don’t learn the fundamentals of HTML and CSS and run into really weird problems because of it.

    The only thing I disagreed with while reading your post was “Theme development was also far simpler during that time. With a handful of files and templates, you could build something special”. IMHO, you can still create something special with a few files and templates :)

    Report

  8. Johannes
    · Reply

    I always wondered why there isn’t a site like Laracasts for WordPress. Laracasts helped me a great deal with learning PHP, OOP and Laravel.
    But I can’t say I ever found material that concise for WordPresss Theme developement.
    My start with developing themes was around 2015 with a post by Tania Rascia. It was about integrating a Bootstrap template into a WordPress theme and helped me greatly!

    Report

  9. Rafi
    · Reply

    Great question, especially in 2021 as WordPress is changing. I began with static HTML/CSS sites, and it took me a while to convert them into dynamic WP sites because, as stated, there really wasn’t a comprehensive approach to this outside the very dense official documentation.

    What really helped me was this post by a self-taught developer: https://www.taniarascia.com/developing-a-wordpress-theme-from-scratch/

    Nowadays I build my sites as HTML/CSS/JS pages and and import them into Pinegrow Theme Converter. PTC displays the page and allows you to tag divs to include WP functions, so I can assign the H1 element as Post Title, some content Div as an ACF field, and so forth. The best part is that it handles enqueuing of stylesheets and scripts automatically, based on the folder structure of your HTML site. I’ve always disliked editing the raw functions.php file.

    Report

  10. Amanda
    · Reply

    I’ve been working through the code in the 2021 theme. I’ve been able to break it in unimaginable ways! I’ve bookmarked and downloaded the resources in this post and comments – thanks, all – so hopefully I can start making changes I can keep. Thanks, Justin, for sharing your hard-earned knowledge.

    Report

  11. Tim Boddington
    · Reply

    Such excellent advice! But I had a chuckle at “The old-timers here in the community, those of us who started out early in WordPress’s history …”; 15 years, old-timers! The basic advice has been true throughout the 50+ years I’ve been programming (and I’m still enjoying it).

    Report

Leave a Reply to Tim Boddington Cancel reply

Your email address will not be published. Required fields are marked *

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

%d bloggers like this: