Bedrock Modern WordPress Stack

Bedrock Modern WordPress Stack is a package that helps you set up a WordPress environment at lighning speed with Ansible and Vagrant to work on a site locally or on a server. It setups a better folder structure, makes loading plugins easier, takes care of deployment and puts your WordPress credentials in a safer place.

Features of Bedrock Modern WordPress Stack

Bedrock Modern WordPress Stack is modern because it is using the latest techniques out there to make WordPress development professional fast and easy. I will go though the main features now here below.

Composer

In the case of Roots Bedrock it uses composer for the installation of WordPress, phpdotenv and the management of all plugins. Composer is a dependency manager like NPM or bundler for Ruby and helps you manage PHP packages. You can read more about Composer working together with WordPress here, but the magic of it in Roots projects is that it will automagically install WordPress for you and the earlier mentioned php packages that have been included in the json file. It also allows you to update your installation with easse and add plugins to your setup that will be maintained by composer as well as long as you add the plugin to the json file.

PHP dotenv

PHP dotenv is a setup in which environmental variables are loaded from a .env file. As the author states: “You should never store sensitive credentials in your code. Storing configuration in the environment is one of the tenets of a twelve-factor app.” So basically this is a safer way to store your WordPress configuration data instead of the storing it in a .php file

Folder Structure

All required files are moved into web and all others are put into separate folders that do not have to be exposed in the webroots

wp-content is renamed to make clearer what is in there.

wp-config.php does stay in the web folder because that is a requirement by WordPress, but the actual configuration files have been moved as explained earlier

vendor is where all composer dependencies are stored and that is where the WordPress core files live too. They are files you need for your app whether it is your plugin or theme.

MU Plugin Auto Loader

Bedrock has an option that allows standard plugins to be required and installed via Composer. Foxaii explains the benefits of this at Roots Discourse:

It enables must-use plugins to be installed via composer and it enables you to declare standard plugins as must-use (meaning that they don’t need to be activated manually and cannot be deactivated from the dashboard).

WP CLI

WP CLI is also included and it is a great command line tool to manipulate WordPress. You can do almost anything you would normally do from the Dashboard with WordPress Core tools or plugins, but with simple commands and less overhead. A few examples:

wp plugin install hello-dolly

wp import /path/to/file – to import wxr file into WordPress with all content or whatever the WXR package contains

wp any-ipsum – with plugin installed

wp backupbuddy backup 2 – do a full BackupBuddy backup

wp acf status – provides a list of found field-groups in the current database of your WordPress project.

Bedrock Ansible

Bedrock-Ansible is basically an extension of Bedrock and helps you with easing the deployment of sites and management of sites locally, on staging and production environments. With the awesome use of Roots’ Ansible Playbook you can setup a WordPress environment locally with the entire Bedrock structure, put together a Vagrant Box that runs NGINX, PHP 5.6, MariaDB and WordPress with a database by just filling in a few variables. To me this is what truly makes Bedrock awesome.

Deployment

Not only does this get setup locally, but options can be added to push all this to a staging server and or production server. Ansible has var files in which you add your WordPress Dashboard user details, database details, url and so on. This can be done for the local, staging and production server. And you get to add connection details too so you can push all to the server using a shell script.

Jasper has been working with web frameworks and applications such as Laravel, Magento and his favorite CMS WordPress including Roots Trellis and Sage for more than a decade. He helps customers with web design and online marketing. Services provided are web design, ecommerce, SEO, content marketing. When Jasper is not coding, marketing a website, reading about the web or dreaming the internet of things he plays with his son, travels or run a few blocks.