Disclaimer: There is no official support for this environment. Our team at Google is using it, and we are happy to share it and collaborate on it with the WordPress community. The environment is still in a very early development stage, so use it at your own risk.
- Standalone Development Environment based on Lando, which itself requires Docker
- WordPress Core Development Repository via Git and Subversion, allowing to seamlessly use both within a single directory
- WordPress Plugin & Theme Development Environment, decoupled from Core Development Repository
- PHPUnit & PHPCodeSniffer
- NPM & Grunt
- Install the latest version of Lando via a GitHub DMG file. You also need to have Docker installed, but Lando will take care of that for you if you don't.
- Clone this repository into a directory of your choice. Navigate to that directory.
lando start. When doing this for the first time, it will set the environment up for you, so it will take a bit longer than on subsequent starts.
- Access your site under
https://wordpressdev.lndo.site/. If you're having trouble connecting, you may be facing the DNS Rebinding Protection issue. To fix this, and to ensure you can develop while offline, follow the Working Offline steps. In other words, add the following to your host machine's
If this is your very first Lando project, make sure that your system trusts the SSL certificate that Lando generates via:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.lando/certs/lndo.site.pem You might need to restart your browser to see the change being reflected.
An additional note on Lando: The project is currently approaching its version 3.0 release, with frequent RC releases. As this environment is based on that latest version, make sure to check back for new Lando versions regularly.
Contributing to Core
WordPress core contributions are done in the
public/core-dev directory which is both a Git clone and SVN checkout. To update the Git and SVN in tandem, do
git svn-up in that directory to update to the latest
master. To switch/update another branch, do
git svn-up $branch. This
git svn-up command is an alias to the repo's
Setup Your Fork
- Fork the wordpress-develop repository to your GitHub account.
- In your teriminal, navigate to the
- Add the GitHub repository as a remote.
git remote add <remote-name> email@example.com:<github-account>/wordpress-develop.git
You can now pull down from the upstream via
git pull origin or push to your remote with
git push <remote-name>.
Setup Your Workspace
You will work and commit in the
./public/core-dev/src directory while your changes are reflected on the frontend from the
./public/core-dev/build directory. Consult
./public/core-dev/package.json for avaiable commands such as
npm run watch to aid your workflow.
- Create a Trac ticket with your proposed changes.
- Create a branch with your ticket ID as reference with
git checkout -b trac-XXXXX.
- Watch for file changes by running
npm run watchfrom inside the
- Make your changes.
- Commit early and often.
- Write tests.
- Push your changes to your GitHub remote with
git push <remote-name>.
Now you can view your changes on GitHub and send the pull request to the wordpress-develop repository.
Theme and Plugin Development
WordPress plugin and theme development should happen in
public/content, which is a custom
wp-content directory, decoupled from the WordPress core repository. The environment automatically takes care of setting WordPress constants appropriately so that the core and content directories are connected, so you don't need to worry about this.
You can customize the environment. Variables placed in a custom
.env file in the root directory will override similar variables from the
.env.base file. Custom CLI configuration can be set up via a
wp-cli.local.yml file (taking precedence over
wp-cli.yml), and even custom Lando configuration is possible via a
.lando.yml file (taking precedence over
.lando.base.yml). For changes to the Lando configuration or environment variables, you will need to run
lando rebuild to apply them.
lando stop to turn off the environment and
lando start to restart it again later.
lando phpunit to perform all tests or
lando phpunit tests/phpunit/tests/<directory-name> to perform a specific set of tests.
You can learn more about available commands in the Lando documentation or by running
lando in your terminal.
If you are having problems after running
landor start such as
git svn-up not recognizing the
.git directories, run
lando rebuild to rebuild the entire
Any kind of contributions to WordPressDev are welcome. Please read the contributing guidelines to get started.