A WordPress project boilerplate with Simply framework and Simply maker: WordPress and plugins installed with Composer, configuration in .env, Symfony dependency injection and a code generator.
- PHP 8.2, 8.3 or 8.4
- Composer 2
- WordPress 6.1+ (new projects install WordPress 7)
- MySQL 8+ or MariaDB 10.6+
- A web server whose document root is the
web/directory
composer create-project clementdecou/simply my-project
cd my-projectEdit .env (created from .env.example):
WP_HOME: the URL of the site, with its scheme (http://localhost:8080);DB_NAME,DB_USER,DB_PASSWORD,DB_HOST;- the salts: generate them at https://roots.io/salts.html.
Point your web server to web/, then install WordPress from the browser or with WP-CLI (wp core install).
The project ships a development environment (PHP 8.4 with Apache, MariaDB). In .env, set:
WP_HOME=http://localhost:8080
DB_HOST=db
Then:
docker compose up -d --build
docker compose exec -u www-data web bash docker/setup.shsetup.sh replaces the placeholder salts, installs the Composer dependencies and WordPress (admin account admin/admin). The site is on http://localhost:8080.
Run the commands as www-data, so that the files they create belong to you:
docker compose exec -u www-data web php bin/console list simply
docker compose exec -u www-data web wp plugin listSettings, as environment variables or in .env:
HTTP_PORT(default8080);PHP_VERSION:8.2,8.3or8.4(default), thendocker compose up -d --build;USER_ID/GROUP_IDon Linux, when your uid/gid is not 1000 (id -u,id -g).
Compose reads only .env (not .env.local): keep the DB_* values there. With DB_HOST=db, run bin/console and wp through docker compose exec. To reset the database: docker compose down -v.
This environment is for development only and is only reachable from your machine. On macOS, two PHP requests rebuilding the Simply cache at the very same time can fail once: reload the page.
config/application.php WordPress configuration, read from .env
config/extensions.php Simply extensions to load (simply-maker, simply-mvc...)
web/wp/ WordPress core (installed by Composer, not versioned)
web/content/ plugins, themes, mu-plugins and uploads
bin/console Simply commands
bin/console loads WordPress, so the database must be reachable.
php bin/console list simply # all commands
php bin/console simply:make:plugin # generate a plugin
php bin/console simply:cache:clear # clear the Simply cache (run it when deploying)
php bin/console simply:debug:hook # list the registered WordPress hooksSee the release notes of simply-framework, in particular v0.3.0 (Symfony 7.4).