In the software world, one constant is the never-ending stream of software updates. One of the dreaded update scenarios occurs when you notice available updates in the WordPress dashboard, you click on the update now button, and then you get the dreaded HTTP 500 Internal Server Error! What do you do? Your website is now offline, and you have no idea why! Here are some steps to take when you want to update your WordPress website.
Three types of updates
Typically, there are three different types of updates. First, there are updates to the core WordPress software. The current version of WordPress is 4.9.4. I recommend to my clients to keep their core version updated. Most core updates correct security holes and add new features. The next type of update relates to themes. Theme authors constantly update their themes each time the core software gets updated. The third type of update is plugin updates. Plugin authors also update their themes to maintain compatibility. Sadly, some theme and plugin creators do not stay on top of core updates or they don’t do comprehensive testing (this is difficult when you consider the thousands of themes and plugins available). These types of updates don’t always occur at the same time. Sometimes, your WordPress website may be running the latest core software with outdated themes and plugin. So, how do you keep your WordPress website running smoothly?
How I update WordPress websites
For all my clients, I operate a shadow version of their website on my development server. I do all my testing there before conducting any installations on their live system. Clients have access to my development server, so we can work together on any updates and upgrades without affecting their live website. I restrict access to my development server for search engines. Once the client approves all the changes, I publish the new version of their website.
I create a custom child theme and use the child theme to do any custom coding. This way, whenever the theme author updates their theme, any changes are maintained. I also do the same for any custom themes I create because I sometimes reuse a custom programmed theme across several clients (to make them different, I make changes to the respective child theme).
I also manually create a backup before proceeding with any updates. This way, if there is any conflict with the updated software, I can always restore the backup and start again. I always install one update at a time. Then I test the update to ensure that it operates correctly. When people do several updates at the same time, they have no idea which update is responsible for the dreaded HTTP 500 error.
Test, test, and test again
With all updates successfully tested on my development server, I start updating the live website. I always make sure there are no visitors currently using the website (I typically install updates at obscure hours). There is nothing worse than having a client contact me and say they lost a huge sale due to their website being down for maintenance (the website goes into maintenance mode during updates).
Sometimes, I get calls from new clients that proceeded with updating their website without testing for compatibility first. Most times, they don’t have a backup available (you do have a backup system in place, don’t you?). For these clients, I FTP into the back end of their website and directly access the server files. The first thing I do is disable all their plugins. Next, I make a backup and download to my testing server. I then start enabling the plugins one at a time (verifying that they work before proceeding). With the website running properly, I transfer the updated website to the live server and test again.
For most websites, simply having and following a process will help mitigate most of the HTTP 500 errors. Also, carefully selecting which themes and plugins you install are important. Choose themes and plugins that are actively updated and have great support. Read the reviews and always test, test, and test again. Finally, ensure that you have a robust maintenance plan to update your WordPress website.