Intro to Modern WordPress with Trellis, Sage and Bedrock

Develop WordPress sites like a champion.

UPDATE: I updated this post here 👀

WordPress is a beast. Setting up your local machine, mysql, keeping track of users, managing dependancies and plugins, setting up your vhosts—jeez, all of that can be a daunting task. Let’s automate some things.

I’m making a few assumptions here. Such as you probably have Node, npm and Bower installed on your Mac. We’ll begin with Homebrew. Full disclosure, I forked Dave Kiss’ take on his champion WordPress workflow with some of my own tweaks. Feel free to check out his setup too, it’s really great.

The whole walkthrough should take about 15-20 minutes of your time on a modern machine. Let’s get started.

Homebrew

Curl Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Make sure to run brew doctor afterward to make sure you have everything installed all nice and neat.

Git, Ansible and Composer

Now that we have Homebrew installed, let’s go ahead and install some goodies for our workflow and get started. Composer will manage our plugins. It’s awesome.

brew install git ansible composer

Install VirtualBox

Go ahead and install your VirtualBox software and follow the prompts.

Install Vagrant

Next, download and install Vagrant. Pretty painless.

Beginning a Project with Trellis

Next, mkdir -p ~/Sites/example.com where example.com is the name of the project.

Then, go ahead and cd ~/Sites/example.comWe should be inside the example.com directory. Now we’re going to clone Trellis into a new directory called ansible with this command:

git clone git@github.com:roots/trellis.git ansible

Provision the Ansible roles and packages.

cd ~/Sites/example.com/ansible && ansible-galaxy install -r requirements.yml

Bedrock

Finally onto Bedrock. A simple WordPress boilerplate and configuration and improved folder structure for your project. Clone it into a new folder called site

cd ~/Sites/example.com && git clone git@github.com:roots/bedrock.git site

Installing the WordPress Core and any Other Composer Dependancies

cd into the new folder called site and let’s get this party started.

cd ~/Sites/example.com/site && composer install

More Ansible Stuff

If you’re like me, you probably have Sublime Text aliased. But click here if you haven’t aliased Sublime. Or if you’re into Vim and all that, that’s cool too.

subl
~/Sites/example.com/ansible/group_vars/development/wordpress_sites.yml

Go ahead and configure your db_namedb_user and db_password and everything else to your liking.

Now the real fun stuff begins. We’re going to cd to the ansible sub-directory we previously created and start up vagrant and the virtual machine voodoo. It will prompt you for your system password because it’s going to add example.com to your /etc/hosts file. No biggie, but you should know.

Also, this will take a while. Probably 10+ minutes or so.

cd ~/Sites/example.com/ansible && vagrant up

If you got any errors, don’t worry. Vagrant might ask you to install a few additional pieces of software for Vagrant. Go ahead and heed Vagrant’s advice. If it appears that your install falls into a timeout loop, run vagrant reload and hopefully that should resolve any timeout errors in the setup.

You should be able to navigate to http://example.dev in your browser and see the fruits of your labor!

Sage

Now that we have WordPress installed, let’s get a starter theme going with Sage. Let’s cd to the theme-root and clone the Sage repo over:

cd ~/Sites/example.com/site/web/app/themes && git clone https://github.com/roots/sage.git

Now let’s rename the Sage directory to our new-theme-name:

mv sage new-theme-namecd to the new-theme-name and npm install && bower installNow you can run gulp in that directory and build your theme! http://example.dev should now have some styles. Sage comes with Bootstrap by default, but you can swap it out for whatever framework you want. Or no framework at all! Whew—that was a lot of steps but way less painful than it could’ve been! More about Sage here.

One Comment

Jose February 2, 2017

This was great! Thanks for helping a noob get things up and running. I’d love to see more posts about specific tasks in this workflow. Like moving the site to productions and a quick how to on how to spin up additional sites.

%d bloggers like this: