My WordPress Development Workflow 2018
Development & business workflows are deeply personal opinions we all have when it comes to creating with WordPress. Over the years I’ve become more and more opinionated as I continue creating sites for clients. I’d like to share my current setup in the hopes that a.) I can get some input from folks who are willing to help me out and b.) hopefully I help someone else out there. Let’s get to it!
So there are a few kinds of sites that our small team here build at DigiSavvy. We do a lot of LearnDash websites as we tend to get a lot of referrals from them; I build a number of membership sites as well; and lastly, we build a decent amount of informational aka brochureware sites.
Over the years, I started with frameworks, and then moved on to creating things from a starter theme, eventually landing on one of my own that we use for a number of projects.
For the last year and a half, I’ve been using Php Storm, which is a great IDE, but also a resource hog on my Macbook. Lately, I started using Visual Studio Code, it’s a really nice IDE, too and doesn’t make my poor laptop sweat so much. It does lack some niceties such as built-in code formatting for WordPress, but then I have a gulp task that does this, so I can live without that. Also, I use Bourbon and Neat a lot and VS Code doesn’t seem to pickup on their functions so there’s no autocomplete. PHP Storm picks up on them so I’m not sure what the deal is.
There is a pair of themes we’ll use for projects. The first one is my starter theme ‘Some Like it Neat.’ And the next one is the Beaver Builder in which we use a modified child/parent theme combination. We do lean on Beaver Builder a lot these days and Some Like it Neat is fully compatible with Beaver Themer, many of our clients prefer the builder interface.
I prefer using Some Like it Neat because it’s an opinionated starting point for my projects using the tools I prefer to use when developing themes. It doesn’t include the latest and greatest tools but it does use Gulp, Bourbon, and is built to use CSS Grid. The theme isn’t as bleeding-edge cool as something like the Sage theme but the tools that are built-in work well and allow me to develop quickly with Sass, Browser-Sync, and other tooling packages that helps things along nicely.
I take my gulp configuration from Some Like it Neat and port it over to the Beaver Builder child-theme. Sometimes I choose that theme because it already has a decent amount of styling built-in that I don’t have to create—I’ll use this theme if I’m building something quickly or the budget is relatively low.
We use Git. If you’re not using this yet it’s time to git it together and start. If I can figure it out so can you! I mention this because I can’t tell you how many times I’ll chat with devs who I’m looking to work with who don’t use it in their workflows.
Currently, I’m using two options for local WordPress development: Local, by Flywheel and, more recently I’ve been using and loving Lando by the folks over at Kalabox. Local and Lando are both flexible tools that use Docker instances for your sites, so you can have many varied configurations of PHP, web servers, and other packages. Both are free! Woot!
Admittedly, Lando is not for the faint of heart. It takes some reading, a little digging around docs, thus a lot of patience. But the set up is worth it. However, I’d really only recommend Lando if you’re also using Pantheon.
Integrated deployment using Lando
Long one of the biggest complaints I’ve had (and heard from others) was “how do you deploy to your production/live site?” Lando and Pantheon (which we use for hosting and I’ll talk about that below) make this piece super easy. Lando has push and pull commands that allow you to pull git-based code changes, media files, and database from any of your environments to your local site with just a command and a few options. It’s insanely nice and makes me feel like a superhero every time I use those commands.
Similarly, when I have work that I’ve completed, I can do a push to dev easily and optionally send my code changes and database to dev, again, with one command and a couple options.
The Lando Pantheon setup is a dream, folks.
I like my hosting to be as opinionated as I am. For that reason, I love, and recommend Pantheon. Their setup out-of-the-box is superb and well thought and even better executed.
Now, Pantheon isn’t the only hosting provider to provide multiple environments, git integration, APIs, and WP CLI integrations to their customers. Pretty much any managed hosting provider has something like that put together. I’ve looked at a lot of them (Liquid Web, DreamPress, WP Engine, Siteground and more). There are good solutions there for sure and if you use and love them, stay where you’re happy! I happen to align with Pantheon’s platform “decisions and opinions” because everything seems tightly integrated and well thought. It’s a platform made by developers for developers and, I really think that’s what sets them (and their product) apart.
Pantheon’s platform has three environments by default, dev, test, and live. It also has WP CLI baked in, along with their powerful Terminus API. Lastly, they provide New Relic performance monitoring. I love that service! I can easily see what resources are being taxed and find the root cause quicly. Additionally, they have a nifty feature called Custom Upstreams (I’ll cover upstreams in a bit).
We develop locally, using the Pantheon dev instance codebase. We pull changes down locally, do our work, and then push back to dev, typically pulling down the database, too. We used WP DB Migrate Pro initially, but with the Lando and Pantheon Push/Pull integration that’s no longer necessary.
Sometimes clients want access to an instance right away for entering content and that’s a common ask. We’ll let our clients access the test site. We import changes using Mergebot or WP Site Sync, both are solid tools for syncing up granular content changes at the database level.
Creating Sites and Managing Codebases with Upstreams
When building a project, we start with a custom installation based on the need: are we building an LMS, an E-commerce site, or something else? We have different installation configurations for each type of site.
What’s an Upstream? The way I think of it is this: An upstream is simply a default codebase that you initiate projects from. But it goes a little deeper than that. Pantheon’s upstreams provide a way to easily update your default codebase across many sites. As codebases become more and more fragmented they tend to become more fragile and prone to breakage with an update. Upstreams provide an initial line of defense in that you can test updates on your upstream first. That’s kinda cool. But do you want to know what’s really cool? When you go to the sites you’ve created from your upstreams and pull down the updates easily. There are ways to automatically handle this.
Upstreams are great if you manage many sites with similar codebases, schools with similar sub/microsites. It makes things much easier to manage. However, I like that I can start projects using an upstream. I think it’s better than using something like composer to be honest.
As I’ve grown into the business, I’ve realized the value that comes from standardizing processes and upstreams allows me to level up the site build side of things.
I have a few plugins I like to start projects with getting started. These plugins are included in different upstreams based on the type of site it is that I’m building. I’ll break it all down for you.
General plugins (things I’ll use across many types of projects/sites)
- Admin Editor Pro – It allows me to easily and logically re-order the admin menus in the back which can get unruly quickly. It helps provide a better user experience.
- Advanced Custom Fields or Carbon Fields
- Ninja Forms or Caldera Forms – Both are fine plugins, it really depends on what is required for the project.
- Yoast SEO – The defacto SEO plugin for WordPress. Although, SEO Framework is worth a look.
- Duplicate Post
- Stop Emails
- What the File – Great for determining what page template is being served
- User Switching – I love this plugin! I install on every site except for those sites where having users logging in is unnecessary.
E-Commerce Specific Plugins
- WooCommerce – This is what we build with 90% of the time.
- Premmerce Dev Tools – I like their debugging feature and also its ability to create dummy products for your WooCommerce install.
- Checkout for WC – This is a great little plugin that simplifies the checkout process. Definitely worth looking into.
- Holler Box – Great plugin by Scott Bollinger. While I tend to think it’s optional, it’s just a great plugin on most any site. It’s good enough to warrant that status.
- Disable WP – Hat tip to Chris Lema on this one, I’ll be adding this one.
Membership Specific Plugins
MemberPress and RCP are my two favorite plugins. Both are very well built and easy to use. I find that MemberPress fits the bill with most standard Member use cases. I’ll opt for RCP for scopes that need more customization or require a high degree of complexity. But really, either plugin is supermodular.
- Restrict Content Pro
For LMS (Learning Management System) deployments we use and trust LearnDash, it’s the leading LMS plugin for WordPress. Although, LifterLMS is really, really good and has been steadily improving over the last couple years. It costs a lot but I think it’s worth it. Any customizations we make are to LearnDash, however.
Bonus: Ongoing Maintenance and Scaling that Sh*t
Not really development related but I figure someone might find it possibly useful. Typically, when we finish a project we have the client on our preferred hosting platform, the client pays for it and it’s their account so we’re not reselling it. Along with Pantheon, we use and trust a nifty service called Staging Pilot, developed by the best-kept secret in WordPress, Nathan Tyler of Tyler Digital. I won’t get into the guts here, but Staging Pilot saves me a TON of time on managing client site updates. It integrates directly with Pantheon’s platform. For starters, it saves time by automatically running updates on your sites. Great, right? But that’s not all. It also takes your updates and can push them to test and then to live. That’s even better right? But that still isn’t all. Staging Pilot intelligently runs visual regression tests to ensure that the updates it runs do not blow up your site. If they do then Staging Pilot will revert the changes, all without impacting any of your main environments. Having SP manage your updates saves you at least one to three hours per week. No joke.
If the Pantheon + Lando combo is the dream, then adding Staging Pilot to the mix is nearing holy grail status!
For ticketing, we use Help Scout. There’s nothing crazy that we do with it. We’ll pass support tickets over to ActiveCampaign’s CRM, just to keep a log of tickets in the customer’s contact file.
Automated testing is something I need to make time for and just get it done. I’m looking at Circle CI, since that’s what is largely used at Pantheon. We’ll see. I also need to get with the times and integrate webpack already.
As we’re always looking to update our stack I’m curious what you’re all using these days. I’d love to know. Leave a comment.
Get Notified When We Publish New Content!
Join more than 2,500 people who get our marketing automation, business marketing, and WordPress news!
I like to use the following.
Advanced Custom Fields
Events Calendar Pro by Modern Tribe for… You guessed it a calendar
Gravity Forms for forms
Enable Media Replace to replace media files at the same location as the original file.
A few projects on Github allow me to really customize my multi site.
Jason Roman’s WordPress Multiple Network-Wide Menus to create a master menu that is used across the entire installation.
and Google Webfonts Helper to self host webfonts so I don’t have to rely on Google.
I’ve been known to drop in Jetpack from time to time.
Dude, I didn’t know about Google Webfonts Helper, that’s totally helpful! =)
Thanks for the share. =)
Hey Alex, amazing post (and picture). I didn’t know about Lando. Wondering how to set it up in a VPS. I’ll take a look at it. Thanks for sharing!
Hey, fella! I know you!! =) How are things?
I know you can install on linux, but it’s not something you would install on a server; it’s more for your local dev environment.