Become a WordPress Developer: Unlocking Power With Code
More
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 Become a WordPress Developer: Unlocking Power With Code
# | Title | Duration |
---|---|---|
1 | Welcome to the Course! | 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 |