Skip to content

Getting Started

Nick Hamze edited this page Apr 21, 2026 · 2 revisions

Getting Started

Two ways to see Fifty running: a one-click WordPress Playground demo (everything in your browser, ~60 seconds), or a real local install (you already have a wp-content/themes/ directory you want to drop these into).

Try a theme in WordPress Playground

Every theme ships a Playground blueprint at <theme>/playground/blueprint.json. Click any link below and a disposable WordPress instance boots in your browser — no local install required. Expect 60 to 90 seconds on first boot while the dataset and product images download.

Each blueprint:

  • Boots WordPress (latest) on PHP 8.3 with the kitchen-sink extension bundle and networking enabled.
  • Logs you in as admin (password: password).
  • Installs WooCommerce and the WordPress Importer from wordpress.org.
  • Pulls the theme directly from this repo via Playground's git:directory resource (only the matching <theme>/ subfolder is fetched, not the whole monorepo).
  • Imports the Wonders & Oddities sample dataset: 30 products with images, 20 blog posts, 8 pages, menus.
  • Configures the WC store: shipping zones (Flat Rate + Free), payment methods (COD + Bank Transfer), store address, pretty permalinks.
  • Seeds a sample customer account, 5 orders in varied statuses, 2 variable products, a mix of on-sale / out-of-stock / backorder states, and 12 product reviews.
  • Sets show_on_front=page to the seeded home page and page_for_posts to the seeded journal page, then lands you at / so you see the designed homepage (not WP's "your latest posts" fallback and not /shop/).

To inspect the customer dashboard, log out and sign in as customer / customer.

Short URLs (recommended)

GitHub Pages serves docs/ and forwards every short URL below to the canonical Playground deeplink. Generated by python3 bin/build-redirects.py from each theme's playground/blueprint.json.

Page Obel Chonk Selvedge Lysholm
Home obel/ chonk/ selvedge/ lysholm/
Shop obel/shop/ chonk/shop/ selvedge/shop/ lysholm/shop/
Single product obel/product/bottled-morning/ chonk/product/bottled-morning/ selvedge/product/bottled-morning/ lysholm/product/bottled-morning/
Cart (pre-filled) obel/cart/ chonk/cart/ selvedge/cart/ lysholm/cart/
Checkout obel/checkout/ chonk/checkout/ selvedge/checkout/ lysholm/checkout/
My Account obel/my-account/ chonk/my-account/ selvedge/my-account/ lysholm/my-account/
Journal obel/journal/ chonk/journal/ selvedge/journal/ lysholm/journal/
404 obel/404/ chonk/404/ selvedge/404/ lysholm/404/

To enable the short URLs once on a fork: in the GitHub repo's settings → Pages → set Source to "Deploy from a branch", Branch main, Folder /docs, save. New themes get short URLs automatically — python3 bin/build-redirects.py reads each theme's playground/blueprint.json and writes docs/<theme>/<page>/index.html for every entry in its PAGES list. The bin/clone.py workflow runs it as the final step when you scaffold a new theme.

Long-form deeplinks (the URLs the short URLs redirect to)

If you can't or don't want to use the short URLs (e.g. running off a fork before GH Pages is enabled), the canonical Playground deeplinks are still the source of truth:

Page Obel Chonk Selvedge Lysholm
Home / / / /
Shop /shop/ /shop/ /shop/ /shop/
Single product /product/bottled-morning/ /product/bottled-morning/ /product/bottled-morning/ /product/bottled-morning/
Cart (pre-filled) /cart/ /cart/ /cart/ /cart/
Checkout /checkout/ /checkout/ /checkout/ /checkout/

To try an in-flight branch, swap ref in the blueprint to your branch name (keep refType: "branch"). To pin to a specific commit, set ref to the SHA and refType: "commit".

If you want a faster, data-free version (just the theme + WooCommerce, no sample content), copy <theme>/playground/blueprint.json, drop the wordpress-importer plugin, the two runPHP blocks, the importWxr step, and the wp-cli steps, and serve the trimmed blueprint from any HTTPS URL. Same pattern, ~15 second cold start.

Loading themes into WordPress

WordPress expects each theme as a top-level directory under wp-content/themes/. This repo lives inside wp-content/themes/fifty/, so each theme is symlinked back so WordPress's theme scanner finds it:

wp-content/themes/
├── fifty/             # this monorepo
│   ├── obel/
│   └── chonk/
├── obel  -> fifty/obel
└── chonk -> fifty/chonk

Activate a theme via WP CLI using the short alias:

wp theme activate obel
wp theme activate chonk

Next steps

  • Project Structure — every directory and what it does.
  • Toolingbin/check.py, the snap framework, and the rest of the CLI.
  • Adding a Theme — clone the base into a new variant in ~5 minutes.

Clone this wiki locally