Become a WordPress Developer: Unlocking Power With Code
Course description
Read more about the course
Together we will build a website for a fictional university and along the way we will:
Install WordPress on your personal computer so you have a private playground copy of WordPress to practice and experiment with
Get introduced to the PHP language (this is what powers WordPress)
Set Up a New Theme (You'll learn how to convert any HTML template into a living breathing WordPress theme)
Create Custom Post Types and Custom Fields
Relate pieces of content with each other (e.g. a professor and a program)
Learn the basics of (object-oriented) JavaScript
Leverage the WP REST API
Learn to use JavaScript to communicate with the WordPress back-end on-the-fly
Let visitors sign up for a basic account on our site
Build a "My Notes" feature (user specific single page application with real-time CRUD actions)
Let users "like" or "heart" a professor (update the professor's like count on-the-fly)
Deploy our website live up onto the web for the entire world to view
And much more!
Watch Online
All Course Lessons (173)
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Welcome to the Course! Demo | 10:00 | |
| 2 | What is a Dev Environment? (Your First Installation) | 13:35 | |
| 3 | About The Recent Big Changes To WordPress | 03:48 | |
| 4 | First Taste of PHP | 16:32 | |
| 5 | Creating a New Theme | 12:05 | |
| 6 | PHP Functions | 14:53 | |
| 7 | PHP Arrays | 12:29 | |
| 8 | The Famous "Loop" in WordPress | 14:31 | |
| 9 | Header & Footer | 18:34 | |
| 10 | Convert Static HTML Template into WordPress (Part 1) | 03:30 | |
| 11 | Convert Static HTML Template into WordPress (Part 2) | 18:04 | |
| 12 | Interior Page Template | 17:53 | |
| 13 | Parent & Children Pages | 16:59 | |
| 14 | To Echo or Not To Echo | 09:02 | |
| 15 | Menu of Child Page Links | 19:58 | |
| 16 | A Few Quick Edits / Improvements | 09:22 | |
| 17 | Navigation Menus | 15:39 | |
| 18 | Navigation Menus (Continued) | 05:07 | |
| 19 | Blog Listing Page (index.php vs front-page.php) | 19:59 | |
| 20 | Blog Continued | 13:15 | |
| 21 | Blog Archives (archive.php) | 12:10 | |
| 22 | Custom Queries | 19:59 | |
| 23 | Blog: Few Quick Edits & Improvements | 06:32 | |
| 24 | Custom Post Types | 17:50 | |
| 25 | Displaying Custom Post Types | 19:49 | |
| 26 | Quick Timeout: Misc Updates | 14:24 | |
| 27 | Custom Fields | 19:10 | |
| 28 | Ordering (Sorting) Custom Queries | 14:10 | |
| 29 | Manipulating Default URL Based Queries | 17:52 | |
| 30 | Past Events Page (Custom Query Pagination) | 18:32 | |
| 31 | Creating Relationships Between Content | 18:41 | |
| 32 | Displaying Relationships (Front-End) | 19:59 | |
| 33 | Quick Program Edits | 08:51 | |
| 34 | Professors Post Type | 19:13 | |
| 35 | Featured Image (Post Thumbnail) | 19:07 | |
| 36 | Featured Image Sizes & Cropping | 09:16 | |
| 37 | Page Banner Dynamic Background Image | 15:13 | |
| 38 | Reduce Duplicate Code - Create Our Own Function | 19:51 | |
| 39 | Using Our "pageBanner" Function | 10:55 | |
| 40 | Reduce Duplication - "get_template_part()" | 11:29 | |
| 41 | Getting Our Computer & Project Ready for JavaScript | 16:07 | |
| 42 | Optional: The Finished Product Of This Course: All In One Import File | 13:31 | |
| 43 | Campus Post Type | 19:47 | |
| 44 | Campus Map on Front-End | 18:52 | |
| 45 | Campuses Continued | 19:54 | |
| 46 | Final Campus Details | 04:36 | |
| 47 | Live Search | 09:54 | |
| 48 | Open and Close Search Overlay | 18:17 | |
| 49 | Keyboard Events in JavaScript | 19:39 | |
| 50 | Managing Time in JavaScript | 15:33 | |
| 51 | Waiting / Loading Spinner Icon | 19:59 | |
| 52 | Load WP Content with JS | 17:51 | |
| 53 | Generate HTML Based on JSON | 19:59 | |
| 54 | Conditional Logic Within Template Literal | 17:44 | |
| 55 | Quick Misc Edits | 10:52 | |
| 56 | Synchronous vs Asynchronous (Part 1) | 11:47 | |
| 57 | Synchronous vs Asynchronous (Part 2) | 10:12 | |
| 58 | REST API: Add New Custom Field | 15:51 | |
| 59 | REST API: Add New Custom Route (URL) | 16:38 | |
| 60 | Create Your Own Raw JSON Data | 14:11 | |
| 61 | WP_Query and Keyword Searching | 08:26 | |
| 62 | Working With Multiple Post Types | 10:41 | |
| 63 | 3 Column Layout for Search Overlay | 19:59 | |
| 64 | Custom Layout & JSON based on Post Type | 19:34 | |
| 65 | Search Logic That's Aware of Relationships | 16:03 | |
| 66 | Search Logic That's Aware of Relationships (Part 2) | 19:47 | |
| 67 | Completing Our Search Overlay | 14:26 | |
| 68 | jQuery Free Live Search | 06:51 | |
| 69 | Traditional WordPress Searching | 19:02 | |
| 70 | Traditional WordPress Searching (Part 2) | 19:59 | |
| 71 | User Roles and Permissions | 19:59 | |
| 72 | Open Registration | 20:00 | |
| 73 | Open Registration (Part 2) | 11:49 | |
| 74 | "My Notes" Feature | 20:00 | |
| 75 | "My Notes" Front-end Part 1 | 07:32 | |
| 76 | "My Notes" Front-end Part 2 | 14:56 | |
| 77 | Delete Posts with the REST API | 17:52 | |
| 78 | Edit / Update Posts with the REST API | 18:31 | |
| 79 | Creating New Notes | 14:53 | |
| 80 | Creating New Notes (Part 2) | 08:49 | |
| 81 | Note Permissions and Security (Part 1) | 19:59 | |
| 82 | Note Permissions and Security (Part 2) | 20:00 | |
| 83 | Per-User Post Limit | 19:57 | |
| 84 | jQuery Free My Notes | 06:14 | |
| 85 | Let Users "Like" Content (Part 1) | 19:32 | |
| 86 | Let Users "Like" Content (Part 2) | 12:55 | |
| 87 | Creating Custom POST and DELETE Endpoints | 14:14 | |
| 88 | Programmatically Create a Post | 19:18 | |
| 89 | Enforce Limit of One Like Per User/Teacher Combo | 17:29 | |
| 90 | Completing the LikeBox | 19:46 | |
| 91 | jQuery Free LikeBox | 02:19 | |
| 92 | Going Live with Our Website | 09:04 | |
| 93 | Path A (Simple and Quick) | 18:27 | |
| 94 | Path B (Advanced / Manually Moving a Site) | 13:24 | |
| 95 | Database Config for Two Site Environments | 10:22 | |
| 96 | Ignoring Certain Files with Git | 07:52 | |
| 97 | Automatic Git Deployments to Web Host | 14:59 | |
| 98 | Challenge: Make Homepage Slideshow Dynamic | 09:32 | |
| 99 | Introduction to Plugin Development | 13:36 | |
| 100 | Let's Create Our First Plugin | 10:40 | |
| 101 | Adding a Settings Page For Our Plugin | 15:00 | |
| 102 | Settings API (Saving Settings Data) | 19:52 | |
| 103 | Finishing Our Settings Form | 19:59 | |
| 104 | Actually Counting the Words, Characters, and Read Time | 19:57 | |
| 105 | Translations / Localization (For PHP) | 19:44 | |
| 106 | Admin Sub-Menu | 16:00 | |
| 107 | Custom Admin Menu Icon | 17:06 | |
| 108 | Alternative: Manually Handling Admin Form Submit | 15:24 | |
| 109 | Finishing Word Filter Plugin | 18:04 | |
| 110 | Introduction to JavaScript Plugin Development | 19:45 | |
| 111 | Introduction to JSX | 19:47 | |
| 112 | Block Type Attributes | 20:00 | |
| 113 | Let's Discuss the Output of Our Block (Part 1) | 11:53 | |
| 114 | Let's Discuss the Output of Our Block (Part 2) | 10:08 | |
| 115 | Starting Our Multiple Choice Block Type | 18:26 | |
| 116 | Styling Our Block | 11:26 | |
| 117 | Event Handling & Updating Block Attributes | 20:00 | |
| 118 | Setting Up The Correct Answer | 19:53 | |
| 119 | How To Use React on The Front-End of WordPress | 18:52 | |
| 120 | Passing Block Data From PHP Into JavaScript / React | 12:26 | |
| 121 | Letting Users Click On (Guess) An Answer | 15:16 | |
| 122 | Attention To Detail | 14:37 | |
| 123 | Let Admin Choose Background Color of Block | 15:07 | |
| 124 | Block Text Alignment & Block Preview | 08:31 | |
| 125 | Using The "block.json" File | 17:28 | |
| 126 | Starting Our Featured Professor Plugin | 14:24 | |
| 127 | Loading a List of Professors | 13:10 | |
| 128 | Displaying Professor Info | 19:59 | |
| 129 | Professor Preview In Editor (Part 1) | 05:23 | |
| 130 | Professor Preview In Editor (Part 2) | 19:23 | |
| 131 | Control Post Meta With Block Type | 19:58 | |
| 132 | Add Related Posts to Professor Detail Page | 12:06 | |
| 133 | Translations / Localization (For JavaScript) | 11:30 | |
| 134 | Understanding The Pros and Cons of the "Post" Paradigm | 20:00 | |
| 135 | Creating Our Own Custom Table | 19:43 | |
| 136 | Querying Our Table | 16:07 | |
| 137 | Building Dynamic Queries (Part 1) | 10:57 | |
| 138 | Building Dynamic Queries (Part 2) | 17:35 | |
| 139 | Create Pet From Front-End | 11:35 | |
| 140 | Delete Pet From Front-End | 09:41 | |
| 141 | What Is Full Site Editing? | 10:11 | |
| 142 | Creating A Block Theme | 19:59 | |
| 143 | Where Should We Begin With Block Themes? | 10:40 | |
| 144 | Custom Banner Block (Part 1) | 04:40 | |
| 145 | Custom Banner Block (Part 2) | 18:55 | |
| 146 | Making Our Block Editable | 10:16 | |
| 147 | Generic Heading Block | 12:15 | |
| 148 | Finishing Generic Heading Block | 18:50 | |
| 149 | What Is "theme.json" In A Block Theme? (Part 1) | 02:52 | |
| 150 | What Is "theme.json" In A Block Theme? (Part 2) | 19:36 | |
| 151 | Custom Button Block (Part 1) | 05:02 | |
| 152 | Custom Button Block (Part 2) | 19:12 | |
| 153 | Color Picker For Button Block (Part 1) | 11:07 | |
| 154 | Color Picker For Button Block (Part 2) | 14:11 | |
| 155 | Our PHP Render Approach | 18:51 | |
| 156 | User Uploaded Background Images (Part 1) | 10:16 | |
| 157 | User Uploaded Background Images (Part 2) | 14:17 | |
| 158 | Quick Details: Banner Block | 09:08 | |
| 159 | Events And Blogs Area (Part 1) | 06:26 | |
| 160 | Events And Blogs Area (Part 2) | 14:39 | |
| 161 | Header & Footer Blocks | 12:46 | |
| 162 | Slideshow Block (Part 1) | 16:56 | |
| 163 | Slideshow Block (Part 2) | 11:20 | |
| 164 | Templates (Part 1) | 08:31 | |
| 165 | Templates (Part 2) | 12:22 | |
| 166 | Single Page & Post Templates | 18:41 | |
| 167 | Remaining Templates | 14:41 | |
| 168 | Only Allow Certain Block Types In Certain Editor Environments | 07:53 | |
| 169 | Creating A "Blank" Template For Landing Pages | 06:06 | |
| 170 | Challenge: Have an Update Plan in Place (Security) | 08:13 | |
| 171 | Challenge: Query Vars | 12:48 | |
| 172 | Finale: JavaScript Next Steps | 06:07 | |
| 173 | Bonus Lecture | 03:36 |
Unlock unlimited learning
Get instant access to all 172 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscription
Want to join the conversation?
Sign in to comment