My WordPress Stack

I’ve been building sites on top of WordPress and developing WordPress themes for the past five years. Here are the tools, hosts, themes, and plugins I use to build WordPress sites quickly and get the most out of them after they launch.

Total Theme

For the past two years, I’ve used the Total theme as the base I build off of. I’ve used more themes and theme frameworks than I can count, but Total is the one I keep coming back to.

I chose the Total theme because it is highly configurable, it has solid documentation, includes a bunch of premium plugins, and it has tons of hooks and filters that you can use to add in custom programming. Pretty much everything in the theme is modular, so it can be quickly customized and reused without cascading effects.

It is great to prototype with! All of the demos on the theme’s main site are built from the same theme with different configurations. You can install these demo options through the theme’s interface and build off of them. All of the customizations are able to be exported at JSON from the WordPress admin area, which makes it super easy to copy changes from staging to live.

The custom post types Total has included for Staff, Portfolio, and Testimonials are super useful. I’ve expanded them to work for many things besides their traditional uses: job talent profiles, a collection of videos, a cocktail library, and book quotes.

Here are some sites I’ve made using Total: Cook Like Chuck, AmandaKate.me, Nasty Design Co, MichaelMalice.com, RyanSosnow.skiArchived Link, The Commonwealth Partners, and Strong Roots NebraskaArchived Link.

Plugins

Here are the plugins that I use most often:

  • Jetpack: This is built by Automattic, the same company that builds WordPress. It has a ton of useful features. I use their stats, image galleries, image CDN, brute force protection, spam filter, CSS editor, Markdown support, and the desktop and mobile apps. All of these features are free, but they will also back up your site and give you access to support if you pay for it.
  • Visual Composer: This is the best WordPress page builder I’ve come across. I’ve used five different ones so far and this blows the other four out of the water. I also love that it has an API so that you can add your own features to it. It will work with almost any theme and it comes pre-loaded with the Total theme I mentioned above.
  • WP Super Cache: WordPress is pretty heavy on server resource use. One way you can cut down on that is with caching. If you are a server admin like Eric Davis and have direct access to Apache, you can tweak your Varnish settings. If you are on a shared host, you’ll need to install a caching plugin like WP Super Cache. This one is built by Automattic, the company that develops WordPress. The plugin builds static versions of your posts and pages, which are served directly to users instead of loading up the whole PHP engine for each pageview. Underpowered hosts and sites with heavy traffic will benefit most from this.
  • Page Duplicator: This plugin allows you to make exact copies of posts, pages, and custom post types. This is super useful when you want to keep the layout and custom field values you’ve created. I’m surprised it doesn’t come standard in WordPress.
  • Yoast SEO: This is the best plugin out there for technical search and social metadata optimization. The free version is more than adequate. This isn’t an SEO magic wand: 80% of SEO depends on having great content people actually want to consume.
  • Ninja Forms: This is very well designed, easy for non-technical people to use, and has a ton of extensions that allow forms you create to send data too the major tools you use.

Development

Development Environment

I primarily develop on virtual machines to keep my work from affecting my main machine. If something screws up, I can just delete the virtual machine and start over.

I use Virtual Box to run the VMs, Vagrant to manage them, and Laravel Homestead as my base development environment. WordPress’s famous five minute install instructions work perfectly on Homestead.

Staging and Production Environment

For large sites that I work on, I always make sure we have two separate environments running at all times: Staging and Production. The production site is the live one that customers access. The staging site is a copy of the live site where all major changes are applied and tested first (function additions, template changes, plugin testing, etc). The production site should never have code on it that hasn’t been tested on the staging site first. Hosts like WPEngine include a staging area with every install by default. On shared hosting services like A Small Orange or Bluehost, you’ll need to set up a subdomain install to act as your staging environment.

IDE

Coda by Panic is my IDE of choice. I’ve been using it since it first launched and I stuck through the major 2.0 (and subsequently 2.5) release. It has highlighting, remote editing and publishing (via FTP/SFTP/SSH), previewing, SQL connectors, Terminal, regex search, and git support built in. Tons of third party add-ons available. I’ve written AppleScripts for it and know most commands by heart, so I’m unlikely to jump ship any time soon.

Use a Child Theme

Whenever you make any code changes to a WordPress theme, you should always do them from a child theme. Child themes allow you to change functions and templates and still preserve changes when the base theme is updated. Here is a child theme for Total.

Hosting

For Low Traffic

For low traffic sites, a shared hosting account is all you need. This means your site is hosted from a server that hosts multiple sites at once.

I use A Small Orange. I host Cook Like Chuck, AmandaKate.me, Nasty Design Co, and a theme staging area all on one of ASO’s Small accounts, which I pay $50 a year for. I’ve had up to 100 distinct users on Cook Like Chuck at the same time without an issue (thanks, Reddit!). I’d probably feel comfortable up to 200-300 distinct users on an ASO site at the same time without sweating as long as things are properly cached (see plugins below). Anything more than that and you’ll want to jump to something like WPEngine.

Never opt for the “Tiny” version at A Small Orange. It is on cheaper, slower infrastructure, which is why the price is so low. It probably won’t even handle up to 100 concurrent users.

ASO has great customer service. They are always available, even in the middle of the night!

For High Traffic

For high-traffic sites, I use WPEngine.

Praxis had a huge traffic surge at the beginning of March when Isaac Morehouse went on Tucker CarlsonArchived Link. At the peak of the surge, we had around 7500 concurrent users (i.e. 7500 different people hitting the site at the exact same time) and we had no decrease in performance on WPEngine. They aggressively cache and have super fast servers. Cook Like Chuck (on an A Small Orange Small account) would have crashed under that load, even with caching plugins.

WPEngine also has great customer support. They don’t let you tweak caching settings yourself, but a support agent will take care of it for you in minutes.

For the Server Admin

If you want to build out your own hosting environment, tweak caching settings, set up load balancers, etc, you can build out your own WordPress hosting environment on Amazon Web Services.

At eResources, we had a great experience with hosting high traffic WordPress sites on Rackspace. Their support is top-notch.

Backups

Hosts like WPEngine automatically make backup points every night. On shared hosts, I have a recurring task scheduled to download a backup every Friday. I keep weekly backups for a month and monthly backups for a year. I store these on an external drive that is synced up to Backblaze.

Domains

I use Hover for buying and managing domain names and most DNS management. I use Cloudflare for DNS management on domains that need SSL because I love their Flexible SSL plan.


What are your favorite WordPress tools? Let me know in the comments!



Comments

Leave a Reply

Webmentions

If you've written a response on your own site, you can enter that post's URL to reply with a Webmention.

The only requirement for your mention to be recognized is a link to this post in your post's content. You can update or delete your post and then re-submit the URL in the form to update or remove your response from this page.

Learn more about Webmentions.