One of the biggest announcements at WordCamp Europe this year was the release of the page builder Gutenberg (other important issues, such as WooCommerce doubling their renewal fees, were not brought up).
Gutenberg represents a step forward for WordPress and helps it tackle other platforms such as Medium, Wix, and SquareSpace. Whilst I appreciate the importance of this plugin to WordPress, I feel there is an important issue that is not being discussed. The problem relates to how there is are rules on what theme and plugin developers add to your website database when you install their product.
Every time you active a WordPress theme or plugin on your website, you are adding data to the WordPress database. The problem is that the vast majority of themes and plugins do not remove the data they add once you have deleted them from your website.
This is an issue that I have been raising again and again in my reviews of WordPress products and it is a problem that needs more exposure.
Too Much Garbage in WordPress Databases
For any WordPress theme or plugin to work correctly, it needs to add data to the WordPress database.
Simple solutions might add a few rows to an existing WordPress table, whilst more advanced solutions will add additional tables to your database.
Unfortunately, very few WordPress products provide a way of removing all of the data that is added to your database. Web Dorado is one of the few companies that ensures all of their themes and plugins contain an option to completely remove all data from your website; however they are the exception, not the rule.
Most companies do not provide any way of uninstalling their product fully and many who do provide a removal tool do not do it correctly.
A good example of this was in my recent review of WP File Download. In the settings area of the plugin there is an option to remove all of the files you had uploaded. This did remove any files that had been uploaded via the plugin, but it left all data in the database. This meant that when you installed the plugin again, all settings and file categories remained.
The Problem with Leftover Tables and Rows
Leaving a few rows or tables in your WordPress database does not seem like a big problem, but over time it can be. Every time you install a WordPress plugin or theme it is adding at least a couple of rows to your database and sometimes it adds multiple new tables.
If your WordPress website has been active for many years, this could result in there being leftover data from hundreds or possibly even thousands of plugins and themes. It makes your WordPress database larger and unnecessarily cluttered.
A solution such as Plugins Garbage Collector can help deal with this, but it cannot remove everything.
What Plugins Garbage Collector does is highlight any tables that are not associated with installed plugins and then gives you an option to delete those tables. It works really well.
Its main limitation is that it only find tables that are no longer being used. WordPress plugins and themes add a lot of rows to core WordPress tables such as wp_options and wp_posts and Plugins Garbage Collector does not search within required tables.
What WordPress Needs to Do
WordPress has to start enforcing theme and plugin developers to add an option to completely remove any data that has been installed to the database. This will help de-clutter WordPress database's, keep the database size manageable, and ensure that they do not contain unnecessary data.
Guidelines can be provided to developers to help them add an uninstallation feature and the theme and plugin review teams at WordPress.org could enforce the new rule.
Many WordPress products are freely available outside of WordPress.org, be it on Github, the developer's website, or marketplaces such as ThemeForest. WordPress obviously have no control over the products released outside of WordPress.org, but they could perhaps add some code to the WordPress Core that displays a warning such as “Warning: This WordPress theme/plugin does not contain any uninstall tool” (or something to that effect).
We are living in a time where every website owner knows the importance of website performance, so it is surprising that this has not been made a priority before.
What's your thoughts on this subject? Please let me know in the comment area below.