Preventive maintenance is a concept employed, to some degree, by most industries. Taken at it’s most literal interpretation, it’s also practiced in the most common activities in which humans participate.
Bathing prevents germs and disease, as does cleaning the house. Changing the oil in a vehicle prevents the engine from failing. We do these things because we know that failing to do so will result in larger problems in the future.
If a problem does occur, you’re now in a different realm. You’re then responding in a reactive manner. Perhaps your vehicle has broken down on a remote road, creating further problems, or perhaps you forgot to clean the refrigerator for a month, and now a horrifically-evolved microcosm of bacteria and disease has taken anchor inside.
End of analogy!
At Maintainn, several of the initial support requests received by new account holders are ultimately the result of a lack of preventive maintenance being employed by the site owner.
Some common initial issues are:
- A profoundly out-dated version of WordPress
- Out-dated versions of plugins
- A theme containing a method or functionality that WordPress core has deprecated
- The “Frankenstein” – A site using countless plugins that are not vetted for quality
- Database bloat and poor performance resulting from the installation and subsequent removal of many plugins (“I’ll just try this plugin out, and remove it if I don’t like it”)
- Theme lock-in (More on that here, here and here).
- Site is hacked due to one of the issues noted above
I’ve been lucky to speak on this topic at three conferences; in Philly, Omaha, and Baltimore, and while in each audience there was a large number of people familiar with preventive site maintenance, there was also a fair number of those entirely unfamiliar with doing so.
And understandably so. After all, WordPress site maintenance can be more nuanced a task for those familiar with only the most basic WordPress site use (“I know how to create a post, create a page, and reply to a comment, and that’s it!”).
Yet we’ve also seen these issues on enterprise-scale sites, and on sites containing commerce plugins–even in cases where the site was the only source of revenue for a company.
Hopefully, by the time you’ve finished reading this article, you’ll have a handy checklist of things to check on your site regularly.
Before we get started, I should note: If you’re an existing customer, most of this is not relevant. We take care of it all!
The twelve points that are covered in this talk each have two parts: the first, explaining the relevance to developers, and the second, explaining the relevance to site owners. I’ve included a shorter description of each below, but they’re discussed in detail within the talk. Each also include relevant examples and resources.
In some cases, making a small modification to the interface, such as hiding links that are not relevant to some users, can reduce confusion. Here are some examples of things you can do:
There’s a great article, recently published by my talented co-worker, Patrick Garman, on how to create a staging site.
Here’s more resources–many of which are mentioned in Patrick’s article as well:
WP Engine – WordPress staging comes with all of their plans.
Can’t get staging setup? Go local. One of the best ways to do that these days is with ServerPress for those that do not code – or just want something hassle-free, or Vagrant, for extra power and configuration options.
Bonus: VVV by 10up is wonderful.
Bonus Bonus: This excellent talk by Mark Jaquith at WCSF 2013.
Bonus Bonus Bonus: VV (Variable VVV), by a very talented co-worker, Brad Parbs.
This can be for code, of course, but also templates and common tasks you find yourself repeating on your site. Keep forgetting how to properly add a product variation in WooCommerce? Create a post draft on the site that you can refer to.
You can also use any variety of note-taking apps to create a checklist of things to run through when making updates to ensure your site is still operational when you’re finished.
A list of github gist alternatives
A nice collection of Coda clips
Design Shack snippets tutorial
Bonus: GistBox: a great helper app for github gists. Pretty neat.
This can provide a solid foundation for security and quality. For many sites, the best option is typically to use a child theme. The use-case for theme frameworks and starter themes varies greatly. Here are some I’ve used that I find great to work with (when it’s relevant):
Bones by Eddie Machado and co.
Underscores by Automattic. The starter theme for me these days.
Project Management Services
Each of these points relates to both development and client use of a site. Project management can be preventive because tasks and their associated scope can be documented for future use. They also serve to assist in the creation of documentation for any custom work.
As easy as this is to resolve as a risk, it still happens. Issues can arise from simply uploading the wrong version of a file. Give yourself the assurance of knowing that the plugin you’re uploading is the latest version.
Back up your site. Do it. There are many free and premium resources available at any of the links to the talks noted above.
There are several backup plugins from which to choose, of course, but here are the few I’ve used; they’re all solid:
UpDraft Plus – Great free plugin with a premium option. I use it on a number of personal sites.
Version control helps developers keep track of changes made to code over time, and by whom. It helps isolate issues, and is the industry standard for team collaboration.
If you’re getting started, I highly recommend this tutorial series.
Git Tower is pretty great to start with, as are the native github apps, if the command line is a bit daunting at first. Sourcetree is nice as well. If you’re submitting to WordPress.org for anything, make sure to take a primer on subversion if you’re new to that old-school fella.
Scoping the Destination
Recently, one of our customers had a particularly persistent problem on their site that made it clear the poor performance of the web hosting environment was the culprit. In cases like this, there is little we can do to help if the customer remains with the host. Making sure your host is a good fit is as important as a home builder making sure a home is not built on a foundation of marshmallows.
Here’s a great helper system report plugin by Andrew Norcross: System Snapshot Report
Training and Documentation
Whether it’s a developer/agency training you on how to use your site, or you’re showing your employees how to correctly add and edit content, it’s important to know that you’re doing things correctly, and not creating further issues. having a place on the site that can easily be referred to when needing instructions on how to user a particular feature is priceless.
Here’s that great plugin I mentioned by Mark Jaquith: WP Help
Remember to check out WP101.com and WPBeginner as well – great content on there, regardless of skill level, and of course, BobWP. You can’t go wrong with any of these.
Two Important Dev Practices
Using unique function names, namespaces when possible, and classes is an important general development concept. There are countless articles and resources on the subject, but here are two notes to help get things started in a way that is likely much more eloquent than my talk was:
Ryan Sechrest on namespaces and constants
How these errors manifest on a site are incredibly varied, but here’s a common one:
Defining a scope of responsibilities for yourself and your employees
If you’re an agency or developer, it’s a great idea to make sure both you and your client know which of the above are your responsibility, and which is theirs – both before and after the initial project is complete. If you’re working with a high volume of new people/companies, get a contract, or at least define your terms of service and scope of responsibility.
A support/maintenance contract should be hand-written. Sure, you’ll need to include some clarification and boring lawyer jargon in some cases, but it should be clear and easy to understand.
Here are some links to get things started:
A website maintenance contract template by MyIntervals.com
Those should give an idea of what you’re after. Although I find the above template to be deeply long-winded, contracts are specific to your use-case and the use-case of your client agreements.
If you’re a site owner, are the people that have access to your site allowed to install or update plugins, regardless of their role at your company? If something broke on your site in the past because an employee – understandably – took it upon themselves to update a plugin without testing on a staging site, it may be a good idea to limit the access of different user roles, so you can decide whom should be allowed to do what specific tasks.
Keeping WordPress core as well as plugins up-to-date is deeply important, as are backups. Even if you don’t have a staging site, version control, or detailed definitions of user roles and capabilities on your site, keeping things up-to-date and having regularly scheduled backups puts you ahead of many issues that may occur.
1 thought on “Preventive Maintenance in WordPress”
Great stuff! If you’re going to customize the admin for someone (which you usually should) it may be a good idea to make this an intentional part of user onboarding and very project or role-specific. If you train people to use a site as you build it out according to their needs you will create a productive feedback loop that reveals assumptions and missteps you’ve each made about what is easy/hard, needed/not needed, and what the optimal workflows for their most common tasks really are.