Free online courseBuild a WordPress Theme from Scratch: Beginner to Advanced
Duration of the online course: 8 hours and 8 minutes
New
Free course to build a WordPress theme from scratch with templates, menus, widgets, Customizer API, sliders, and post features for real sites.
In this free course, learn about
Theme Foundations and Core Files
The Loop, Templates, and Front-End Assets
Branding and Navigation
Widgets and Custom Queries
Customizer and Slider Configuration
Course Description
Learn how to build a WordPress theme from scratch in this free web development course designed to take you from the basics to more advanced, real-world theme features. You will move from an initial setup and required theme files to creating layouts that display posts correctly and look great with custom styling.
As you progress, you will work on core theme building blocks such as the home page and single post templates, post thumbnails, pagination, and handling missing pages with a 404 experience. You will also add practical enhancements like a custom logo, navigation menus with styling, and dropdown behavior for a polished site header.
The course also explores extending WordPress with widget areas and custom widgets, including registration, display, and title handling. To make the theme more flexible, you will use the Customizer API to manage visual settings such as images and slider behavior, helping you create a theme that can be adjusted without touching code. Ideal for beginners who want a complete, hands-on path to building a functional WordPress theme.
Course content
Video class: #01 Wordpress theme from scratch | Intro | Quick programming beginner tutorial17m
Exercise: What is the main purpose of a WordPress theme?
Video class: #02 Wordpress theme from scratch | Action -21m
Exercise: In WordPress development, what is the main purpose of using hooks?
Video class: #03 Wordpress theme from scratch | Required theme files | Quick programming beginner tutorial17m
Exercise: What are the minimum files required inside a new WordPress theme folder for the theme to appear and be usable?
Video class: #04 Wordpress theme from scratch | Displaying posts | Quick programming beginner tutorial19m
Exercise: When displaying multiple posts on a WordPress theme index page, which function must be called inside the while loop to prevent an infinite loop?
Video class: #05 Wordpress theme from scratch | Adding CSS -11m
Exercise: Which parameter in wp_enqueue_script() determines whether a script loads in the footer instead of the header?
Video class: #06 Wordpress theme from scratch | Image slider -09m
Exercise: In a WordPress theme search form, which input name is required so WordPress can process the search query?
Video class: #07 Wordpress theme from scratch | Home page posts | Quick programming beginner tutorial08m
Exercise: How can you include a reusable post card layout inside the main loop on the homepage?
Video class: #08 Wordpress theme from scratch | Post thumbnails | Quick programming beginner tutorial10m
Exercise: How can a theme enable the ability to set a Featured Image for posts in the editor?
Video class: #09 Wordpress theme from scratch | Single post view | Quick programming beginner tutorial14m
Video class: #10 Wordpress theme from scratch | Pagination | Quick programming beginner tutorial26m
Exercise: Where is the maximum number of posts shown per blog page configured in WordPress?
Video class: #11 Wordpress theme from scratch | handling 404 page not found | Quick programming beginner tutorial07m
Exercise: How do you create a custom Page Not Found page in a WordPress theme?
Video class: #12 Wordpress theme from scratch | Custom logo | Quick programming beginner tutorial15m
Exercise: Which WordPress feature must a theme enable to let users upload and change a site logo in the Customizer?
Video class: #13 Wordpress theme from scratch | Navigation menus | Quick programming beginner tutorial15m
Exercise: In a WordPress theme, what is the main purpose of registering navigation menus (menu locations) with register_nav_menus()?
Video class: #14 Wordpress theme from scratch | Navigation styling | Quick programming beginner tutorial15m
Exercise: How can a dropdown submenu be hidden by default and shown only when hovering over its parent menu item?
Video class: #15 Wordpress theme from scratch | Nav walker class | Quick programming beginner tutorial18m
Exercise: What is the main reason to provide a custom walker to wp_nav_menu() when building a Bootstrap-style WordPress navigation?
Video class: #16 Wordpress theme from scratch | Nav walker class 2 | Quick programming beginner tutorial12m
Exercise: When adapting a WordPress menu Walker to match Bootstrap navigation, what class should replace the default submenu class on the nested
?
Video class: #17 Wordpress theme from scratch | Nav dropdowns | Quick programming beginner tutorial14m
Exercise: In a custom WordPress nav walker for Bootstrap, what check is used to add the dropdown class to menu items that contain submenus?
Video class: #18 Wordpress theme from scratch | Page view | Quick programming beginner tutorial08m
Video class: #19 Wordpress theme from scratch | Additional post info | Quick programming beginner tutorial17m
Exercise: When building the post meta section, why did trying to echo get_the_category() directly cause an error?
Video class: #20 Wordpress theme from scratch | Widget areas | Quick programming beginner tutorial14m
Exercise: When adding widgets to a WordPress theme, what must you do before widgets appear under Appearance → Widgets as usable areas?
Video class: #21 Wordpress theme from scratch | Registering widgets | Quick programming beginner tutorial13m
Exercise: Which WordPress function is used in a theme template to output the widgets from a registered sidebar area?
Video class: #22 Wordpress theme from scratch | Create a custom widget | Quick programming beginner tutorial12m
Exercise: Where should custom widget code be organized to keep functions.php clean?
Video class: #23 Wordpress theme from scratch | Display custom widget | Quick programming beginner tutorial16m
Exercise: How do you create a custom loop to fetch specific posts in WordPress?
Video class: #24 Wordpress theme from scratch | Custom widget details | Quick programming beginner tutorial20m
Exercise: When adding a new field (e.g., comment) to a custom WordPress widget, what must you update so the value is saved to the database after refreshing the Widgets page?
Video class: #25 Wordpress theme from scratch | Adding post view count | Quick programming beginner tutorial20m
Exercise: Which WordPress table is designed to store extra post data like a view count without adding new columns to wp_posts?
Video class: #26 Wordpress theme from scratch | Post views custom query | Quick programming beginner tutorial11m
Exercise: Which WP_Query arguments are used to list posts by highest view count first when views are stored in a custom field named views?
Video class: #27 Wordpress theme from scratch | Adding Widget titles | Quick programming beginner tutorial21m
Exercise: How can you stop flexbox from stretching sidebar widget items to match the height of a taller column?
Video class: #28 Wordpress theme from scratch | Customizer API | Quick programming beginner tutorial26m
Exercise: In the WordPress Customizer API workflow, what must be created before adding a control for the slider text or images?
Video class: #29 Wordpress theme from scratch | Customizer API Images | Quick programming beginner tutorial21m
Exercise: When using the WordPress Customizer cropped image control, what value is stored in the setting and how is it turned into a usable image source?
Video class: #30 Wordpress theme from scratch | Customizer slider disable | Quick programming beginner tutorial07m
Exercise: How can a WordPress theme allow users to enable or disable a front-page image slider with one click?
Video class: #31 Wordpress theme from scratch | Slider images text | Quick programming beginner tutorial19m
Exercise: When adding editable slider text in the WordPress Customizer, where should you place the default values so they show up correctly?