Search the site:

Copyright 2010 - 2018 @ DevriX - All rights reserved.

Interactive Guide: Backward Compatibility and Stability

When it comes to content management systems such as WordPress, functionality and ease of use shouldn’t be the only things to look for. If you want your website to provide a reliable and optimal user experience for your visitors, you need to pay attention to the platform’s stability.

A stable platform will be regularly maintained and updated, it will be secure, and it will also work with most hosting environments. It will also be backward compatible, which means that you won’t have to start from scratch each time there’s a major update of the platform’s core.

Over the last decade, WordPress has steadily been making progress in advancing their platform and they have been supporting all PHP versions, from version 5.2.4 onward. This ensures that every website powered by WordPress will function as intended, no matter which hosting provider you’re using. This also means that your theme and plugins will continue to work even after you update WordPress to the newest version.

In the long run, a stable platform means that your website is less likely to break. Which is a good thing, because putting your site in maintenance mode makes it unavailable to your readers, customers, and clients. In other words, your loyal audience will have a smooth user experience when they visit your site, rather than be confronted with a booking form that doesn’t work or an online store that’s gone offline.

From a business standpoint, a stable website means that it will continue to work years down the road, which translates into a website that constantly provides a reliable user experience for your visitors and helps you establish and maintain their trust.

But what makes a stable website? And how does WordPress maintain backward compatibility? Let’s discuss those below.

What Makes a Stable Website?

Having a stable website is crucial if you want to provide your visitors and customers with a reliable user experience. One part of website stability relates to the experience your visitors are having when they visit your website using their computers, laptops or mobile devices.

According to statistics provided by Stat Counter, the majority of people are using Windows OS, but Android is a close second. That means that a good majority of your visitors are not only using their desktop computers to visit your site, but tablets and smartphones as well.

StatCounter Global Stats

In essence, those visitors need to be able to read your content, get in touch with you, or buy your product, no matter which operating system they are using. Even if they are using an older version of an operating system, your website should still provide visitors with the best possible experience just as it should do the same years down the road in future OS and browser versions.

Similar to the point above, a stable website will work as intended no matter which browser or device your visitors are using. However, user experience is not the only thing that matters when it comes to website stability. Although important, user experience only comes into play once your website is available to everyone, which is why your hosting environment should be taken into consideration.

When talking about WordPress, it’s important to keep in mind the recommended requirements for WordPress hosting. The official recommendation is to use a hosting company that supports PHP 7 or greater, MySQL version 5.6 or greater or MariaDB version 10.0 or greater, and HTTPS support. They also recommend Apache or Nginx as the best servers for running WordPress.

Even though WordPress advocates the use of PHP 7 or later, it’s worth mentioning that even if your host is still running an older version of PHP, WordPress will still work and visitors will be able to interact with your website. Even if you decide to change your hosting company and the new host is using the most recent PHP version, you should be able to migrate your site without it breaking. That’s exactly how a stable platform should behave.

As you can see from the chart below, 40% of hosting environments that are used to host WordPress are still running PHP 5.6.

PHP versions chart

If WordPress as a platform that powers your site wasn’t stable, your website would break every time WordPress updates. This would prevent you from ever updating your site or adding new functionality to it. This could eventually cause security problems and increase the chances of your site getting hacked.

Finally, it’s necessary to address the issue of maintaining your site and updating it with new features. While you may not take care of it personally, and you’d rather hire a developer to do it for you, you should understand that a stable website should be easy to maintain and safe to update.

If your website is stable, there is no need for your developer to create a new theme for your site each time WordPress comes out with a major update. All your content should still remain on your site after the update, rather than disappearing from your database.

Likewise, if you have custom coded plugins, they shouldn’t be written from scratch every time. Your developer should be able to add new functionality or write a new plugin for you without running into the risk of their code breaking your existing site.

When you put all these pieces together, it’s obvious that website stability is closely related to backward compatibility. Backward compatibility is at the core of WordPress development and without it, your site may not display or work properly on older operating systems or browser versions. Visitors using an older operating system may not be able to complete transactions on your site or they may not be able to use your contact form.

But when you keep backward compatibility in mind, your site will be stable and reliable for years to come.

 Common Issues That Cause Instability

When it comes to WordPress, common issues that cause instability are regressions, not maintaining backward compatibility, and conflicts that can arise when using certain themes and plugins. Below, we’ll take a look at each of those more in-depth.

Regressions

One problem that can cause issues with the stability of your website is not conducting regression testing. Every time you make changes to your website’s code, there is a chance that something might break. Your code may cause images not to display, slideshows to disappear, or the text on your pages may overlap with your menu items. It can also cause more serious problems such as one of your plugins not working at all or encountering the famous WordPress white screen of death.

Those problems usually happen if the theme or a plugin you’re using is more complex. It can also happen due to a simple error in the code that was added to any of the theme or plugin file.

With regression testing, you can test your website after significant changes have been made to it, such as bug fixes, updates, or adding new lines of code to your theme or one of your plugins. It should uncover any potential problems and show you if the changes you made will break your site.

You can perform regression testing with a number of tools available online such as browserstack, selenium, nightwatchjs, and much more. Using one of those tools will allow you to catch even small and subtle changes like a different heading color that you wouldn’t notice otherwise.

Some of those tools will allow you to create test cases and see if your website passes them by producing the expected result. Some tools can also be used for visual testing and provide you with screenshots to help you catch the results of your changes.

You can use those tools to help you see if a site moved from a local production environment to a live server still works correctly, whether there are any broken links or images, and more.

Another example of where regression testing is useful is after upgrading the PHP version on your hosting server. You can use the tool to ensure that your theme and plugins still work even after the upgrade.

Conflicts

Sometimes, website stability can be affected by plugin or theme conflicts. The more complex a plugin is, the better the likelihood of it not playing well with other plugins on your site. The risk for plugin conflicts is also greater the more plugins you use as well as if you use two plugins that do the same thing — such as two caching plugins, for instance.

However, there are a few methods that you can use to prevent potential conflicts from arising.

Avoid Outdated Plugins

If you decide to use a plugin to achieve specific functionality, make sure the plugin is compatible with the latest version of WordPress and that it is regularly updated and maintained. A plugin that is not actively supported is more likely to contain outdated code, which can lead to it not working at all or causing a conflict with other plugins on your site.

Backup Plugins Before Performing Updates

Even if you’re using plugins that are updated on a regular basis, you should back them up before updating to the next version. Doing so will allow you to revert back to the previous version of a plugin if the update proves to be unstable and causes problems with your site.

The easiest way to backup all the plugins on your site is to download the plugins folder from wp-contents folder using an FTP program.

Create a Local Test Version of Your Site

A good way to avoid potential problems with plugin conflicts is to create a local test version of your site with software such as XAMPP or MAMP. You can then perform all the modifications on your site, including plugin updates without any fear of breaking your live website.

Once you’ve ensured that updating a plugin won’t create problems, you can then update the plugin on your actual website.

Update Plugins Individually

Finally, you should update your plugins one by one, rather than updating them all at once. In the event a conflict should occur, it will be easier to troubleshoot which plugin caused the conflict and make it easier to restore the previous version of the plugin.

While the above methods are great for preventing conflict, there are still situations when a conflict is unavoidable. In those cases, you need to find the conflict as well as find the solution to fix it.

Finding the Conflict

The first step toward identifying the plugin conflict is to deactivate all the installed plugins and reactivate the primary plugin that has the problem. Ensure it is working correctly before doing anything else.

After that, activate the remaining plugins one by one to check and see if the conflict occurs again. Once you’ve found the plugin that’s causing the problem, you will need to find a solution.

Finding the Solution

Now that you know which plugin caused the problem, the first thing should be to check the plugin support forums for a possible solution. Chances are the plugin caused issues for other people and there may be a new version available that resolves the conflict or a simple fix that you can apply yourself.

Alternatively, you can revert back to the previous version of the plugin or find a different one that offers the same functionality.

When it comes to theme conflicts, the general rule applies here as well. Themes that are complex in nature as well as those that have a lot of custom functionality coded in – something that should belong in the plugin territory.

Luckily, there are a few tools that can help you check whether or not your theme bears the risk of causing conflicts.

Plugins like Theme Check can help you check if your theme is coded with WordPress coding standards in mind and provide you with error messages that you can copy and paste directly into a Trac ticket for the theme or sent to your theme’s developer if you’re using a third-party theme.

Backward Incompatibilities

Lastly, backward incompatibilities are another reason for website instability. In an ideal world, everyone who runs WordPress would regularly update their websites as well as their themes and plugins. But, if you look at the official WordPress stats, there is still a good portion of users who are using older versions of WordPress.

WordPress versions chart

Because of this, it’s crucial that WordPress core, as well as themes and plugins, still continue to work, even with older versions of WordPress. While it might be tempting to use all the latest features of PHP 7 and change the way a plugin or a theme calls or uses a certain function or part of WordPress core code, doing so would go against the core WordPress principle of maintaining backward compatibility and cause a lot of sites to break.

Similarly, using deprecated WordPress functions that are no longer used could also cause incompatibility problems and affect all the sites that are running the most current version of WordPress. That’s why it’s crucial to check every plugin for compatibility before installing it on your site.

You can easily determine whether a plugin is compatible with your WordPress version by looking at the plugin details. This will tell you the minimum required version of WordPress required to install and run the plugin as well as the highest version of WordPress on which the plugin has been tested and proven to work without any problems.

Akismet Plugin

If the version of WordPress you’re using is anything lower than the recommended version, chances are the plugin will not work on your site or will cause your site to break.

Best Practices for a Stable Site

Now that we’ve covered what can cause website instability, let’s discuss the best practices for keeping your site stable.

Hosting

Your hosting environment plays a large part in your site’s stability. A good and reliable hosting company should ensure that all the software used on their servers is regularly maintained and kept up to date. In case of WordPress, that means their servers should support the latest version of PHP and MySQL which are needed for WordPress to work properly.

However, not all hosting environments have updated their PHP version and over 43% are still using MySQL 5.5.

MySQL versions chart

The good news is that WordPress will still work even with older versions of PHP and MySQL. But, the bad news is that with an older version of PHP, you’re exposing your website to a lot of vulnerability risks. PHP 5.4 hasn’t been patched since 2015 and active support and development ended in January of 2017 for PHP 5.6.

PHP 7 is the first major update for PHP after 12 years which means there are a lot of documented hacks for older versions of PHP.

The latest release of PHP brings a lot of security improvements to the table, including a few new tools for serialization and cryptographically secure random numbers which make it harder to write code that can be exploited by hackers.

Aside from better security, PHP 7 is much faster than its predecessors, which means your site will offer better usability which will lead to visitors spending more time on your content. It will also impact your SEO rankings for the better, considering search engines favor fast loading websites.

PHP7 Benefits

If your hosting provider is still using an older version of PHP, you can reach out to them and ask if they are planning to upgrade their PHP version or if they can do it for you. If they aren’t willing to upgrade, it might be time to consider switching to a different company. The WordPress’ official site even has a list of hosts that meet all the necessary requirements for running WordPress.

A clean and simple theme

A clean and simple theme that has the basic features you need on top of an appealing design goes a long way toward improving the stability of your site. As mentioned earlier, a theme that tries to mimic functionality better left for plugin territory or that adds tons of unnecessary features is more likely to cause problems.

While it’s true that such themes attempt to cater to business and website owners who aren’t tech-savvy, they often come with a bloated code that not only slows down your website, it can also cause conflicts and increase the security risks for your website.

To make matters worse, there is no shortage of WordPress themes available, both free and paid. And there is no shortage of independent theme shops and marketplaces offering thousands of premium themes that claim to have all the bells and whistles you could ever want. So how can you make sure the theme you choose is coded following the best WordPress coding practices?

A good place to start looking for a theme is to use the official repository. You’ll find plenty of free themes suitable for both personal blogs and business sites as well that passed the theme review process and should cause no issues with your WordPress version or the plugins you are using.

WordPress Themes directory

However, the downside of free themes is that they offer very limited support. You can find answers to most common questions on the theme support forums but you won’t be able to get help directly from the theme author every time you need it. Free themes are also limited in features they offer, meaning you are responsible for making necessary changes and tweaks to get the theme to behave and look exactly the way you want it.

Because of this, most WordPress users prefer to buy a premium theme. Ongoing support, the ability to get in touch with the author directly, and extra features are the main reasons why premium themes exist. Luckily, WordPress has a list of trusted theme authors and theme shops you can use a starting point in your search for a premium theme that is well coded and won’t impact your site’s stability.

Alternatively, you can hire a WordPress theme developer or a WordPress development agency to create a custom theme for you. The benefit of hiring a WordPress developer is that they will be able to create a theme that has the exact visual style you want, along with necessary features and functionalities that your site needs. Depending on their proficiency, they may also develop custom plugins for your site and recommend plugins that won’t cause conflicts with your theme or with each other.

Carefully Hand-Picked Plugins

Lastly, you need to keep in mind the plugins you’re using on your site. We’ve mentioned that the more plugins you use or the more complex a plugin is, the higher the chances of running into conflicts and compatibility issues as well as exposing your site to vulnerabilities.

On the upside, plugins allow you to add extra functionality to your site and turn it into a full-fledged e-commerce platform or a membership site. They make it possible for your visitors to get in touch with you as well as share your posts on social media networks. In some cases, using plugins is unavoidable. So how can you make sure that the plugins you’ve installed or plan to install won’t cause problems down the road?

The most obvious solution is to use hand-picked plugins from a trusted website. Luckily, WordPress has a huge plugin repository that offers plenty of free plugins that meet WordPress coding guidelines. The repository should be your first stop when looking for a plugin.

When choosing a plugin, make note of the plugin’s rating and the frequency of updates. The higher the rating, the fewer chances of it breaking your site because of outdated code and poor functionality. If it’s updated often, that’s a good sign that the plugin is actively developed and will continue to work in the future.

If you can’t find a plugin in the repository, then turning to independent plugin developers will be the next possible solution. When deciding on a third-party plugin, ensure that the developer’s website provides an easy way to get in touch with them, a way to get support, as well thorough documentation on the plugin’s usage and changelog to determine how often it’s updated.

You can also search for plugin reviews to see what other WordPress users think about the plugin and get a sense of their personal experience. If you can’t find any positive reviews, think twice before installing it on your site.

Similarly to themes, you can hire a WordPress developer to create a custom plugin for your needs.

Plugins for Testing Theme and Plugin Compatibility

As you might imagine, when it comes to WordPress, there are plugins for nearly every task. As such, there are a number of plugins you can use to test themes and plugins for compatibility. Aside from the aforementioned Theme Check, here are a few more tools that will help you check whether your theme or plugin has the potential to break your site.

Log Deprecated Notices

This plugin logs the usage of deprecated functions, files, and function arguments that your active theme might be using and then offers the alternative if available. It also logs incorrect function usage for all WordPress 3.1 installations onwards which means it’s easy to check if your theme is using all the best coding practices recommended by WordPress.

PHP Compatibility Checker

Developed by WPEngine, this plugin will check the theme and plugin code inside your WordPress installation and provide you with a report of compatibility issues that need to be fixed. Compatibility issues will be categorized into errors and warnings and show you the file and line number of the offending code, as well as the info about why that line of code is incompatible with the chosen version of PHP.

Better Plugin Compatibility Control

Better Plugin Compatibility Control is a simple plugin that makes it easy to check compatibility of all installed plugins. It adds the version compatibility information to the plugins page and allows you to instantly see which one of your plugins are compatible with the current version of WordPress running on your site.

WP Test

WP Test is a comprehensive set of tests initially derived from WordPress’ Theme Unit Test Codex paired with new data and case tests that you can download and import to your development site to see how your theme behaves when you start adding different forms of content to it.

Behat

Behat is a PHP framework that allows you to run automated tests on your local computer against your live site. The best part about it is that you can use plain English to describe what kind of behavior you expect and the framework will script the browser to perform tasks like click, fill out forms, and verify text.

PHPUnit

Finally, you can use PHPUnit to test WordPress’ PHP code. It’s the official framework for performing a series of automated tests to make sure your theme and plugins adhere to the coding standards set by WordPress.

A Word About Backward Compatibility

The team behind WordPress prides itself on maintaining backward compatibility. It’s at the core of their philosophy and they strive to never break your site with each WordPress update they release. They encourage other WordPress developers to release themes and plugins as well as updates for those themes and plugins with backward compatibility in mind.

Ideally, backward compatibility shouldn’t be an issue. However, as we’ve seen from the stats above, not everyone updates their WordPress installation on a regular basis. Some aren’t aware of the risks outdated installations pose, while others have been instructed by their inexperienced theme developer not to update the site because it will break.

Because of this, backward compatibility matters. This means that your theme should not break, your plugins should continue to work, and your hosting provider shouldn’t need to change their environment just because you updated your WordPress installation or a plugin.

How to Maintain Backward Compatibility

Now that you know why backward compatibility is important, let’s discuss how you can start with backward compatibility in mind and maintain it over time.

Keep In Mind WordPress Core Load

When you take a look at WordPress’ life cycle, it’s easier to understand how backward compatibility should be taken into consideration and how sticking to it can prevent compatibility issues. For years, WordPress has used several of the same admin callbacks and AJAX callbacks, which keeps the hooks consistent throughout your site.

By studying the core code of WordPress rather than reinventing the wheel, it’s easy to memorize the most popular functions, actions, and filters; and apply those that would be the most beneficial for your workflow.

Adhere to WordPress Conventions and APIs

When it comes to plugins, most plugins have a consistent API which allows you to create new object types, new taxonomies, new parameters, and more. By making use of the existing, generic structures, you can create flexible and simple APIs that won’t break a site when a plugin updates.

Actions and filters found in plugins can also be reused to extend WordPress’ functionality without causing compatibility issues or making your site unstable.

Work With The Same Developer

Finding a trusted developer and working with them every time you need changes and modifications done on your site is another good way to maintain backward compatibility and stability.

If you’re in the habit of hiring a different developer each time, you run the risk of winding up with a lot of “spaghetti code” which may not work with the next set of code changes introduced by another developer. Unfortunately, there are plenty of horror stories out there of WordPress users who were left high and dry by their developer and wound up with an unusable site after they’ve updated their WordPress version.

This leads to poor maintenance and increases the chances of your site breaking, simply because a developer is not experienced enough or doesn’t take into consideration the existing code on your site. To make things even more complicated, not every developer will write code in the same way.

But, if you work with the same developer or agency throughout the lifetime of your website, you have much better chances of keeping the code on your site usable, stable, and conflict-free.

Avoid Page Builder Plugins

Another way to ensure backward compatibility is to avoid using page builder plugins. While they do allow almost anyone to create a website without any technical knowledge, they also come with several problems that can impact your site’s stability.

Most of the page builder plugins use shortcodes to create the desired layout of your site and add elements such as tabs, accordions, sliders, contact forms, and more. In reality, those shortcodes simply “hide” longer bits and lines of code and cause your site to load slowly.

They also come with the so-called lock-in effect. Once you deactivate the page builder plugin, in most cases you are left with a mess on all your pages and posts and no actual content. This may seem like a no big deal if you don’t plan on ever changing your theme or the page builder plugin.

But if the plugin you’re using now to visually drag and drop elements onto your pages and posts stop being maintained or doesn’t have the functionality you suddenly need, you’ll be forced to find a replacement. A different page builder plugin in most cases will not be able to use the same set of shortcodes or may even handle the layout in a completely different manner, which results in a site that’s not usable.

Use Child Themes

Finally, making changes to the parent theme also bears the risk of your site becoming unstable and losing the backward compatibility.

If you modify your theme’s files, whether you add a new function to your functions.php or change a few lines of CSS code, it’s important to keep in mind that those changes will be lost each time there is a new update to the theme.

Avoiding theme updates for the sake of maintaining changes leaves your site vulnerable to security threats. It also means that at one point in the future your theme — and thus, your site — will no longer be backward compatible.

A better way to approach this is to create a child theme and make any necessary changes by copying over the needed files and modifying them. By doing so, you will be able to preserve each and every modification and you’ll be able to update your theme safely without the fear of breaking your site.

Should You Limit Backward Compatibility

Maintaining backward compatibility is not an easy task so it’s no wonder that there are some developers out there who feel strongly against it. Even WordPress itself somewhat limits backward compatibility since version 3.6 by encouraging users to update their WordPress installations to the latest version.

A good reason to limit backward compatibility is rather simple — it prevents your site from getting hacked by exploiting a vulnerability feature in older versions of WordPress.

Given WordPress’ popularity, it’s often a favorite target for many hackers. As such, they are familiar with vulnerabilities and security problems with each major release of WordPress. If your site is outdated, the hackers have a better chance of exploiting the vulnerability and gaining access to your site.

Furthermore, if you’re using an outdated version of WordPress, some themes and plugins may not work with, nor will you be able to use, new features such as the WordPress Live Customizer.

So how far back in time should you go in terms of backward compatibility? Deciding to support all versions of WordPress in existence is near impossible and almost guaranteed not to produce the results you want.

The official recommendation by Theme Review Guidelines is that themes can be backward compatible but only for three major WordPress versions. But, when it comes to plugins, there is no official recommendation on how far back in time you should go.

The best way to make a decision on plugin’s backward compatibility is to check the official statistics page to see which versions of WordPress are still widely used and adjust accordingly.

What to Do If You Decide to Break Backward Compatibility

In some cases, breaking backward compatibility is necessary. In some cases, you may find that maintaining backward compatible code is stopping you from introducing new features and improving the plugin’s functionality.

If your plugin is ready for the next version and you’ve decided to completely rewrite parts of it, it would be a lot easier to break backward compatibility rather than trying to maintain it.

In such cases, you need to make sure to give your users ample time and plenty of notice to prepare them for the update. You should also consider providing extra support both during and after the update process is complete to ensure your users aren’t left with numerous issues and a broken site. Make sure they understand the reason behind the change and encourage them to perform all the necessary steps needed to update their plugin safely.

A Final Word

Maintaining backward compatibility is an important aspect of keeping your website stable. It ensures your site will work flawlessly, no matter what kind of hosting environment you use and it will provide your visitors with a smooth and reliable user experience.

By adhering to WordPress coding conventions, using well-coded themes, and actively developed plugins from trusted authors, working with the same developer or agency every time, as well as hosting your site with a reputable hosting provider that meets the basic WordPress hosting requirements, you’ll have taken the necessary steps to ensure the stability and backward compatibility of your website.

Finally, keep in mind that if you ensure your site is backward compatible today, it also means that your site will be compatible and stable in the future as well. Truly, it’s worth every bit of the effort.

Leave a Reply

Your email address will not be published. Required fields are marked *