Evaluating Plugins from the WordPress Plugin Directory

Peter Shackelford
ITHAKA Tech
Published in
10 min readSep 27, 2016

--

One of the awesome and terrifying things about WordPress is its plugin ecosystem. In the WordPress.org plugin directory alone there are over 46,000 plugins that anyone can install on their site with the click of a button. The quality of these plugins ranges hugely.

In addition to the plugin directory, there are companies whose entire business is selling and supporting one plugin and its add-ons. Other companies provide themes, plugin bundles or memberships. Plugins are also sold via plugin marketplaces. There are also many plugins that have been published on GitHub that anyone can download and start using. All these options can make it intimidating to make a decision on what to use.

My goal in this post is to give you a framework for evaluating plugins available on the WordPress plugin directory.

We are going to walk through three stages of evaluating plugins. First, we narrow the options with a high-level investigation. Second, we do our mid-level evaluation by looking at the documentation and scope of the plugin. Lastly, we try out the finalists in a test environment and look at the code for potential issues that could cause conflicts with other plugins.

High-Level Investigation

The plugin directory provides handy cues in the interface to help you think through your options. This is available from your WordPress install as well as from http://wordpress.org/plugins.

Let’s say you wanted to have a table of contents on your blog post because it’s long and you want people to know what they are getting into. Doing a search for ‘table of contents’ returns just over 2,000 items that may be relevant.

Let’s evaluate the first option that shows up. I wouldn’t normally give this one a second look, but we can use it to demonstrate the opposite of what we are looking for.

Hmm… Immediately we get a warning that it has not been tested with the version of WordPress I am running. If it is known to be compatible with a recent version of WP, this isn’t a problem.

The description is quite limited as well. If a description is not clear or too terse it may reflect on the quality of the documentation.

Let’s check the sidebar to see if this plugin has information that can help us decide for or against it.

  • Author — Clicking on the Author link does not take you to an active site.
  • Last Updated — This plugin was last updated 8 years ago. While WordPress has a strong commitment to backward compatibility, the developer pool and standards have improved since then. Who knows if it will work.
  • Requires WordPress Version — 2.5 which was released in 2008, 8 years ago. Current version is 4.+
  • Compatible up to — 2.6, so for all we know this generally worked in 2008.
  • Active Installs — Current active installs number in the hundred range. Not very many to lend credibility to this plugin. If this was a basic plugin with functionality with broad appeal and was published a few months ago, 100 active installs would be ok.

Overall this plugin has shown itself not to be worth further consideration.

Let’s use the same approach to evaluate the most popular table of contents plugin. These two plugins are for the same ‘feature’ but are at the opposite ends of the quality spectrum.

The full description seems to be detailed and clear—it outlines what it does, its inspiration, and some of the more complex features.

  • Author — Clicking on the Author link takes you to the author’s web site where there is a post detailing the latest release of the plugin.
  • Last Updated — 5 months ago. That isn’t that long ago. If the plugin is not complex it may not need to be frequently updated, but even an update saying that it is compatible with the current version of WordPress signals that the developer is still maintaining the plugin.
  • Requires WordPress Version — 3.2 or higher. Works on the version of WordPress released in 2011.
  • Compatible up to — 4.4.3. This is one version behind what was current at the time of writing this. Not a problem.
  • Active Installs — Current active installs number in the 70,000s. That is a big user base. A big user base shows that many have found this to be useful. It also creates an opportunity for bugs to be surfaced and dealt with by the developer.
  • Average Rating — 4.5 stars. Looking at the review breakdown you can see see that the majority of reviewers gave it 5 stars. This gives us a clue that the user experience hasn’t been frustrating and that things aren’t breaking between releases. It also shows us that there isn’t likely to be compatibility issues with other plugins. Checking out the lower star reviews can give an idea of what types of issues people have run into. Low reviews don’t always reflect on the plugin; users will give low reviews while asking for a new feature, when they don’t understand the plugin, or if they missed a setting that is available.
  • Support — On the wordpress.org plugin page, plugins have a support tab. Looking at that, you can get a feel for how frequently people are asking for support and what types of issues they are running into. Some plugin authors will also mark support requests as resolved. A quick look at the freshness column will give you a clue as to support request density in comparison to the plugin user base. For this plugin the first support page shows 30 requests, but request freshness quickly jumps to months. Knowing that this plugin has over 70,000 active installs, you can deduce that support requests are infrequent.

While this high-level investigation seems to be long winded and time consuming, doing this can take as little as five minutes to get an initial assessment of a plugin. When you are doing your search, be sure and look at the tags at the bottom of the plugins you find. This will help you think of ways to refine your search.

For example, clicking the ‘toc’ tag will return 26 plugins with that tag. Doing a quick evaluation of 26 relevant plugins will be easier than digging through the 2,000 search results for the words ‘table of contents’.

Mid-Level Evaluation

This initial look is enough for us to add this plugin to our ‘good’ list for further investigation. I recommend finding two or three potential plugins using this method and then starting a mid-level investigation.

Here are three of the plugins that would make it into my ‘good’ list. First is the Table of Contents Plus plugin that we already evaluated. Second is a fork of Table of Contents Plus, called Easy Table of Contents, that removes features that are not directly related to the table of content functionality and adds some improvements. Lastly there was ‘HM Content TOC’. This plugin had a low number of installs, but was created by a reputable team and is very bare-bones. At this point we start looking at scope, documentation, and screenshots/example code.

Scope, Documentation, Screenshots, and Example Code

During the mid-level evaluation we will look at the scope of the plugin. We need to find out if it does what we want. We also need to weigh additional features that are above and beyond what we are looking for. Do they add complexity? Plugins that try to do too many things can be complicated to configure, more likely to have conflicts, harder to maintain, and generally bloated. Some plugins that offer a lot of features will be built modularly so you can enable/disable features you aren’t using, which can help to simplify things. Jetpack and Editflow are two examples of plugins that do this. A good rule of thumb is to use multiple single-purpose plugins that are well written and work really well rather than large plugins that do more than you want or understand. If you are building a system for a client to a specific spec, I would recommend using plugins that feature minimal functionality that meets requirements with code level configurations. Plugins that do one thing are less likely to break during updates and are easier to troubleshoot.

Looking through the documentation on wordpress.org this is what I was able to summarize based on scope:

Table of Contents Plus

TOC+ has a few additional features revolving around sitemaps. Sitemap settings are separate from the table of contents settings. Plugin includes an option to add a table of contents widget to the sidebar. It also lets you make the table of contents show up on specific post types automatically, or manually via shortcode. There is a shortcode to remove an automatically added table of contents page-by-page. It can define threshold for how many headers page must have before showing table of contents. Most of the features are handy to have; even ‘off the shelf’ it looks like it works great.

Easy Table of Contents

Easy Table of Contents functionality set is almost identical to TOC+ with the exception that it removes some of the non-toc features.

HM Content TOC

HM Content TOC has limited controls. Settings are all managed through shortcodes. Unless we are going to be adding the shortcode/function directly to the code that generates the page template, all table of contents will need to be added manually per page.

The documentation for all of these seems to be adequate. Screenshots of admin pages, a working table of contents, and examples of shortcodes are provided.

Low-Level Evaluation

At this point we can begin testing plugins. Make sure you have a local environment that you can use as a sandbox. I recommend having debug bar plugin installed and debug enabled to catch any PHP notices and warnings. I also recommend having test data on your site using http://wptest.io/. Install each of your plugins.

Let’s enable the first one and take a look at the settings and options.

HM Content TOC

Here are the setting for HM Content TOC:

Very simple.

Adding [hm_content_toc title=”TOC title”]

Results in a table:

You can override global settings using short-code parameters.

No debug messages.

Taking a look at the code, it is small, well-organized and well-documented.

I don’t see any signs of anything being done using Javascript, so this will be compatible on devices with JavaScript disabled.

Simple and solid.

The only thing to mention is that list depth is not represented, but if that is not requirement, this isn’t a problem.

Easy Table of Contents

This is how the table renders out:

You will notice immediately that it displays the nesting of the headers. If we had only looked at the first plugin we may not have thought about how useful having the nesting could be. Comparing functionality between plugins can help crystallize what it is you are hoping the plugin will do.

The admin interface is clear and focused.

Code is well-organized and -documented. Compared directly to TOC+ the code organization has been vastly improved.

Collapse table of contents button at the top right is visible when Javascript is not enabled, but does nothing.

Table of Contents Plus

Nearly identical options with Easy Table of Contents, just in a different order and wording.

Admin UI not quite as clean as Easy Table of Contents.

Code works and is well-documented. jQuery is called directly from file rather than enqueued. Not likely to conflict with anything as it is acting on code generated by plugin.

Hide button is hidden when JavaScript is disabled.

There is code specifically for developers to use in themes. It includes ways of customizing how ordered lists are output. This is thoughtful and empowering.

Check for these things

One thing to check for is if any JavaScript or styles are being loaded directly instead of via wp_enqueue_script or wp_enqueue_style. You may find these by searching the plugin file for:

<script type="text/javascript">

and

@import

Be a little cautious with plugins that don’t use the WordPress enqueue system as this is the standard way of adding scripts and styles. If you use a plugin to speed up your site by consolidating resources that need to be served, it will need to be aware of styles and scripts that have been loaded.

Another thing to check is if the plugin is using:

wp_dequeue_script

or

wp_deregister_script 

Sometimes developers will deregister WP core jQuery and load jQuery from Google instead. This is a major cause of plugin conflicts as other plugins are depending on core jQuery being available. It also shows that the developer may not be familiar with core WordPress functionality which may be cause for caution.

Summary

When evaluating WordPress plugins from the WordPress plugin directory, remember to divide and conquer. Reduce candidates, evaluate, and test. This will improve your experience as a WordPress user.

Finally, if you have been pleased with a plugin, give it a rating/review, make a donation, and if there is a pro version, I strongly recommend buying it as you are supporting the development and maintenance of a free plugin you have directly benefited from. Remember: the majority of plugins on the WordPress directory are people’s side projects that they have made freely available to help support the work of others.

Want to check out our favorite WordPress site from the many we run? JSTOR Daily is an award-winning publication that’s smart and fun to read!

--

--