Like most of you, I have experimented with many WordPress plugins. I have seen a lot of great plugins and also a lot of bad plugins. I am a bit of a WordPress plugin developer myself, and I admit that I borrow many ideas from other good WordPress plugins. From that experience I have consolidated these good ideas into a checklist that you can follow when reviewing or coding a new WordPress plugin. Here are my picks of the top characteristics that make a great WordPress plugin.
10. Easy Installation
I have seen plugins that require you to modify code after plugin activation to be able to get it to work properly. The instructions were documented clearly in the readme.txt file, but most of the users seem to have missed it (I could tell from the frustration in the plugin support thread). Not everybody reads the installation instructions inside the readme.txt file. The plugin should make an attempt to be able to run straight out of the box after activating no matter how complicated it is.
A good example of this can be found in the “cSprites” plugin. Just activate the plugin and it stitches all images in your posts into CSS sprites to reduce HTTP requests.
9. Seamless Upgrade
As a plugin gets revised, there are bound to be more configuration options or database changes. A good plugin should be able to handle these database changes seamlessly upon upgrade. There are a few ways to do this.
One method is to keep track of configuration option fields. If the option field is missing, then populate it with the default value.
Another method is to keep track of the last upgraded version as one of the hidden plugin settings. On each wp-admin page load, the plugin can check the last upgraded version against the current version and perform a database upgrade operation if necessary.
A good example of seamless upgrade can be found in the “Top 10” plugin.
8. Uninstall Option
The majority of plugins I see leave a bit of a foot print in the database after the user deactivates and deletes it. Some even leave a whole table in the database. Great plugins give you the option to “uninstall” and wipe out all information regarding the plugin.
A good example of this uninstall feature can be found in the “WP-PostViews” plugin.
7. Meaningful Error Messages
When things go wrong with the plugin, there should be a meaningful error message hinting at the problem. That way, the user can troubleshoot it themselves without having to ping the author for support. For example, there are quite a few plugins out there that require you to grant server write permissions to a folder before it can work properly. Failing to do so causes the plugin to silently fail or to bark with weird error messages.
A good example of highly meaningful error messages for troubleshooting can be found in the “WP Super Cache” plugin.
6. Localization Support
Not everybody is comfortable with English. Great plugins are aware of this and are coded with localization support.
A good example of a plugin with localization support is the “All in One SEO Pack” plugin.
5. Intuitive Admin User Interface
Huge plugin configuration pages can confuse the user. It is best to group similar options into it’s own sub-page. It might also be helpful to group advanced features onto its own page or have them hidden by default. That way new users won’t get intimidated by confusing options.
A good example of intuitive plugin admin user interface can be found in the “Referrer Detector” plugin.
4. Reset/Import/Export Options
I am happy to see that a lot of plugins now have the “Reset options” feature which lets you restore configurations if anything bad happens. I have yet to see “Import” and “Export” configurations widely used though. If the plugin has a lot of options, it would be nice to offer the user the ability to import and export those options. That way people can make a backup of their settings or use it as a way to easily manage multiple blogs.
A good example of reset/import/export options can be found in the “WP Greet Box” plugin.
3. Optimized
There are a many things to consider here aside from code performace and optimized database calls. Here are a few outside-of-the-box examples:
- A plugin should not load unnecessary CSS and Javascript files if it doesn’t need to. For example, there is no need to load the same CSS and Javascript files on every wp-admin page if it is only being used on one plugin settings page.
- Since WP Super Cache is one of the most popular ways to fight traffic storms, a good plugin makes an effort to be compatible with WP Super Cache.
- WordPress is always being enhanced (new functions/features added and old ones deprecated). A good plugin stays up to date with these API changes. For example, wp_enqueue_script() and wp_enqueue_style() help avoid reloading the same CSS or Javascript file. wp_enqueue_script() has been available since version 2.1 and wp_enqueue_style() since version 2.6, but I still see many plugins not using them.
2. Secured
A good plugin does not ignore security. There are also many things to consider when thinking about security. Here are a few basic examples:
- A good plugin makes use of nonce validation in wp-admin.
- A good plugin does not print sensitive information into the Javascript code since it is visible on the client side.
- A good plugin makes an effort to protect against SQL injection and XSS exploits.
1. Good Support and Thorough Documentation
Finally, no one will use the plugin if it’s not supported or documented properly. There are plenty of awesome plugins out there that I don’t use just because it is not supported (e.g. Popularity Contest).
Do you Disagree?
Do you think that there should be something else on that list? If so, please share in the comments section!