Theme development happens against a real, running WordPress site — not a live one. Building and testing directly on a live site risks breaking it for real visitors, and every reload takes a round trip to a server somewhere else. A local environment runs WordPress entirely on your own computer instead, so it's fast, disposable, and safe to break.
WordPress needs PHP, a MySQL (or MariaDB) database, and a web server to run — normally three separate pieces of software to install and configure by hand. A local WordPress tool bundles all three together and manages them for you.
| Tool | What it is |
|---|---|
| Local | A free, purpose-built app for running WordPress sites locally — one click creates a fresh site with everything already configured. The most direct route for WordPress specifically. |
| XAMPP / MAMP | General-purpose local server stacks (PHP + MySQL + Apache) not specific to WordPress — you install WordPress into them yourself. More setup, but useful if you're already running other PHP projects the same way. |
Either works fine; the rest of this section assumes Local, since it's the fastest path to an actual running site.
After installing Local, creating a site takes three steps: give it a name, accept the default PHP/web server/database versions (recent defaults are fine for everything this section covers), and set an admin username and password. Local then downloads and installs WordPress itself and starts the site running — no manual download, no database setup.
Every WordPress site has two sides:
| What it is | Typical URL | |
|---|---|---|
| The front end | What a visitor actually sees | yoursite.local/ |
| The admin (wp-admin) | Where you manage content, plugins, and settings | yoursite.local/wp-admin/ |
Log into wp-admin with the admin account created above — that's the screen every remaining step in this section happens from.
From Plugins → Add New in the admin, search for and install (then activate) each of these:
| Plugin | Search term |
|---|---|
| Classic Editor | "Classic Editor" |
| CPT UI | "Custom Post Type UI" |
| Secure Custom Fields | "Secure Custom Fields" |
SCF vs. ACF
Secure Custom Fields is the actively-maintained continuation of the plugin most tutorials still call "ACF" (Advanced Custom Fields). The two became separate projects after a licensing dispute in 2024 — SCF kept the same function names (get_field(), the_field(), and the rest), so anything written for ACF still applies here, just under a different plugin name.
With plugins installed and Classic Editor active, the next lesson opens up the theme's own files and looks at what actually has to exist for WordPress to recognize something as a theme at all.