How I Built my WordPress Development Course on Udemy

My course has been out for 6 weeks and I’ve been promoting it on social media and in my newsletter; if you subscribe to any of those places you know it’s currently available. The cat’s out of the bag. But that doesn’t mean I don’t have more to tell about it. See, I originally set out to make this an announcement post. The fanfare, the glitz, and the glamore. But man, there’s been a lot on my plate and when that happens, my blog is always the first to suffer. That’s OK though! I’m back and I’ll be making lots of more great content, starting with a question I usually ask people on my own podcast: how did I build my WordPress Development course?

When I was presented with the opportunity to create a WordPress Development course for Udemy, I jumped at it. I was considering converting my first book, Building WordPress Themes from Scratch, to an updated course and eBook and this would be a great way to hold my feet to the fire and get it done. The folks at Udemy wanted to launch it by the end of March and I had a baby coming at the beginning of March, so I knew I had to work pretty hard to get it done in time. Here are the steps I took to do just that.

Come Up with a Concept

Every single one of my courses adopts the mantra, “Learn by Doing.” To that end, instead of just explaining important functions and features, I want my students to actually build something while they are working through the class. This is what I consider the concept: imagine we’ve been hired to create a WordPress website for a local restaurant. They have provided us with static HTML files and we need to develop the WordPress theme and any associated plugins.

I found a free HTML template that I could use and distribute for the course, modified it a bit, then started building my course around that template.

Defining the Concept First

For me, defining the concept is the most important step, and it should be done first. The concept will give me direction on types of templates, content, plugins, and anything else I might need to create for the course. From there I can build out the site (in my head or on paper) and note all the features, sections that should be called out, and make decisions on what will be plugin functionality. From deciding the concept, I knew I’d need a section for the menu, that the menu would be a custom post type, and that I would need a plugin for that custom post type. I also knew I’d need custom fields, so CMB2 would be integrated.

After all of those decisions are made, it’s time to make the outline.

Make the Outline

My outline for this course in-particular was based heavily off of my book’s; it was a good starting point that I could iterate on, which I did. I took that outline and determined what topics I needed to cover, what topics I wanted to cover, and what the prerequisites would be. Through this process, I determined:

  • This course will be for web designers who’ve likely never coded a theme before.
  • They also might have a very limited knowledge of PHP.
  • They definitely need to know HTML and CSS. Javascript would be a plus, but not required.
  • Because of this, I might not want to start completely from scratch, but from a point that will continue to teach students after the course is done. I decided to use Underscores for that reason.

These core discoveries lead me to create the outline I felt was best for the people taking the course. When all was said and done, I added a “PHP Primer” to introduce just enough PHP to students, a strong explanation of the WordPress Template Hierarchy, specific modules for Underscores and CMB2, and everything to get a fully functioning, fully editable WordPress theme. I also knew from the concept that I would need a section on simple plugin development.

One important note as I went through the outline was I marked which modules were needed, which were nice to have, and which were unnecessary. This helped me manage the timeline, especially because there was a hard deadline. It also gives me a bin of topics to add to the course if I want, as well as create other courses.

Writing Scripts

For any concept lessons (that is, no code), I wrote and read from scripts. This helped me make sure I hit all the points I need to hit in a clear, concise way. For my coded lessons, I have an outline of what I want to do, and talk through what I’m doing, as I do it.

It’s OK to Mess Up and Reshoot

One important key to this is I always keep the camera rolling. When I’m using the Codex to look something up, when I’m testing, and when invariably, my code doesn’t work as expected, I make sure to capture that. I will also shoot myself thinking through processes and redoing certain actions. Everything can be fixed in post-production! Because of that, my coding videos end up being several minutes longer than their intended length but students get a good look at the raw process, not the polished finished product.

Explaining, not just Doing

This, again, is a really important aspect of my courses. I want my students to stay engaged, and watching me smoothly write a program won’t do that. I mess up, think out loud, and ask them what they think, instructing them to pause the video and determine the answer themselves before continuing.


Once the videos are recorded, it’s time for post-production. Because of the process above, videos usually end up being around 1.5-2x longer than they are supposed to be. You should try to keep instructional videos to 13 minutes or less, so there’s a lot to cut out. Luckily, because I’m recording my whole process, that’s not an issue. I’ll look for long gaps with no audio, things I reworded, and unnecessary screen actions to take out.

Visual Cues

Using the visual cues on the audio line really help with this. I’ll usually clap my hands into the mic when I know I’m about to reshoot something. The result is what you see above – a longer skinnier line with gaps around it. That tells me to skip a portion of the video and pick up right after that point.


The toughest part here is consistency. I want to make sure I intro and outro my videos in the proper order, that anything I promise in an earlier video, I deliver in a later one, and that the overall continuity of the videos are in-tact. There may be times where I need to change something in my browser, or open more tabs. I might complete the action I’m teaching more than one way and accidentally keep the first part of one and the last part of another.

In these cases, I want to make sure that the students are not lost because of editing errors. This includes a lot of watching and rewatching, but it also means a better learning experience.

Putting it All Together

Once the videos are edited and uploaded, it’s time to match them with scripts and outline sections. Udemy provides you a way to build the curriculum, as well as choose what kind of module it is (text, video, exercise, combination). If I did write a script first, I’ll include that in the module. Otherwise, it will be just the video.

Once everything is uploaded, I’ll run through the course one more time to make sure each video is in the right place and there aren’t any huge errors. There will likely be minor things I miss; I can always go back and edit the course later.


Once I’m happy with the course, I’ll publish it. For Udemy specifically, they have a quality assurance process the course has to pass. When it does, the course goes live.

Tools of the Trade

I’ll use an number of tools throughout the course, including hardware and software. Above you’ll see my recording setup, which is the hardware I used for my videos (not including the standing desk):

The most important part of these videos from a hardware standpoint is ensuring good sound quality. I made sure to record during quieter times, arranged my office so that there was enough around to deflect sound (book cases, pictures, etc) or absorb it (sometimes I would record with a quilt over my head and the mic). These prevented me from having to fix any extra issues in post regarding sound.

In my new office, I’ll have some better sound absorbers so I won’t need a quilt.


My software setup is pretty straight forward. I used Screenflow for screen capture, Atom for my editor (with the font size kicked up to 18px) and Chrome for my browser.

Screenflow, which came recommended by a few folks, has some really nice and easy features to use so the learning curve wasn’t very high.

I was able to easily make cuts and add transitions, and even do some simple sound editing. The last bit is important because my interface records each input (of which there are 2) as a separate channel, so the mic only comes out of the left speaker or headphone. I can fix that in post by splitting that channel and making it stereo.

A Discount for You!

Phew! That was a lot. Over 1600 words. Thanks for sticking with me through the whole thing. If you want to see the final product (or want to learn WordPress Development yourself), I have a treat for you. This week only, you can get the course for $10. That’s a huge discount, considering the price is $165 normally. Just click here to get the discount.

And if you have any more questions about my recording setup or course development process, leave ’em in the comments!