WordPress starter framework for block theme development with a Docker-first local dev workflow.
git clone https://github.com/Blake-C/core-wp.git your-project-name
cd your-project-name
rm -rf .git && git init && git add -A
git commit -m "Initial Commit"
git config core.hooksPath .githooks
docker compose up -d
docker compose exec cli_tools zshInside the container:
wp-initwp-init installs and builds the theme & composer packages, configures WordPress, sets the homepage and theme, and removes default themes and plugins.
| Resource | URL |
|---|---|
| Site | http://localhost |
| phpMyAdmin | http://localhost:8000 |
phpMyAdmin credentials: server db, user/password from .env.
Run inside the cli_tools container (docker compose exec cli_tools zsh, then cd wp-content/themes/core-wp):
| Command | Description |
|---|---|
pnpm run build |
Full build: styles, scripts, images, static assets |
pnpm run watch |
Watch mode |
pnpm run serve |
Watch + Browser-Sync livereload |
pnpm run serve:all |
Same as serve plus PHP and HTML watching |
docker compose up -d
docker compose exec cli_tools zsh- Copy
plugins/anduploads/intowp-content/ - Import the database via phpMyAdmin at
http://localhost:8000 - Run a search-replace for the production URL:
wp search-replace https://production.com http://localhost --precise --all-tables
- Activate the theme and build:
wp theme activate core-wp pnpm install && pnpm run build
cp .env-example .env # fill in production credentials
chmod 600 .env
./deploy.shTo deploy updates: git pull && ./deploy.sh
deploy.sh rebuilds the WordPress image on its latest base image, recreates the webroot volume from the new image, and restarts services. The database and uploads volumes are kept. Never redeploy with docker compose down -v, because it deletes the database and uploads volumes too.
MAINTENANCE.md is the step-by-step runbook for updating pnpm and Composer packages, the light-cli and core-wp-wordpress images, WordPress, and the base images, with the versioning and changelog conventions to follow.
See CHANGELOG.md.
Assisted by Claude Code