12 things that make a good WordPress plugin

WordPress plugins come in literally thousands of shapes and sizes. In my view a good plugin should have an intuitive admin user interface, work properly out of the box, and generally act as an extension of the WordPress installation without drawing attention to the fact that it has been developed separately.

Here’s a list of things that I look for when I have a choice of plugins to use, and that I try to consider when building my own. If you build plugins, take a look and see if you comply, or even agree.

Note: some of the screenshots are taken from ZigEvent, an events calendar plugin currently under development by ZigPress.

A good WordPress plugin should…

  1. Have an intuitive admin UI

    event1If your plugin has admin pages, do your best to make them look and operate as much like the standard WordPress admin pages as possible.

    So, if you have an admin page that lets users review and edit many entities (like events in an events calendar for example), why not make it look and work like the admin posts page? This has two advantages: firstly your plugin will be easy to use because it gives consistency to users, and secondly you can make use of the CSS files that are loaded by default, reducing bandwidth requirements and development time.

  2. Use multi-widgets

    Unless there is a very good reason why not, all widgets should be multi-widgets. This is easy to achieve by extending the WP_Widget class. All the built-in WordPress widgets can have multiple instances, so users will expect your widget to be the same.

  3. Clear up after itself

    cleanup1If your plugin has a settings page, it’s quite easy to offer an option for the plugin to delete its options, any database tables and any uploaded files when deactivating.

    However, if you provide this feature, make sure you warn the user of the implications of using it, especially if you use the plugin’s options to store usage or other cumulative data.

  4. Offer shortcode help

    If your plugin features shortcodes, tell the user what they are somewhere in the Admin UI. This is a timesaver, nothing more, but it will endear your users to you and increase your karma. Or it would, if there was such a thing as karma.

  5. Check folder permissions

    If some folders need to be write-enabled, check that they are when the plugin is activated. If they are not, alert the user so they can correct the problem.

  6. Follow readme file conventions

    changelogIf you publish your plugin in the WordPress plugin repository, you will (hopefully) be aware that there is a specific format that your plugin’s readme file should follow.

    There are good reasons for following this format. Recently I went to update the plugin MM Forms Community, and clicked the “View version 1.2 Details” link on the admin plugins page. This opens a lightbox panel with a stripped-down version of the plugin page in the WordPress repository. I clicked the “Changelog” tab to see whether I should bother updating, and was presented with the words “See changelog file”.

    Need I say that this is not helpful?

  7. Avoid being sneaky

    Before I activate a newly-found plugin for the first time, I always check the source code, doing a search for the words “mail” and “google”. It’s amazing how often I find that the plugin author has either set the plugin to send him/her an email on activation, or register an impression on their Google Analytics account. Obviously, any such code gets stripped out before I activate the plugin for the first time. If it then fails to work, it goes in the trash.

    If you absolutely need installed copies of your plugin to exchange data with a remote server, please make it clear to people (and give the reason) before they download and install it.

  8. Avoid advertising

    aioseo1Don’t fill up the admin pages with advertising panels! The All in One SEO plugin is a key culprit here. If donations are part of your business model then of course a small donation panel is fine, but large advertising panels or banners are annoying and almost certainly ineffective.

    It also means that functionality relevant to the user could be completely hidden without scrolling. Look at the screenshot on the right. Can you tell that there are important settings on that page?

  9. Make the licencing terms clear

    Not everyone releases their plugins using the GPLv2 licence, despite the exhortations of the guys at Automattic. That’s understandable, and I am not here to criticise. However, if your plugin is released under a different licence, please make this clear to potential users before they download or buy your plugin.

  10. Have an online home

    When you create the comment block at the top of your main plugin code file, you can (and should) enter a “Plugin URI”. This is converted into a Link on the plugins page in the WordPress admin console.

    Ideally this should always link to a specific webpage concerned solely with your plugin – download link, install guide, feature list, etc. If your plugin doesn’t have a permanent home on the web, people are more likely to mistrust it.

  11. Follow updating conventions

    If you’ve used the All in One SEO plugin (and who hasn’t at some point?), you’ll be familiar with this routine:

    • Go to plugins page, click Update
    • (Possibly) click to verify your FTP details
    • After update, click to return to plugins page
    • See big angry red banner requiring you to go to the All in One SEO settings page and click a further activate setting!

    Please don’t make your plugin do this. It really pisses people off. I am switching all my WordPress sites from All in One SEO to Yoast’s new WordPress SEO plugin, mainly for this reason.

  12. “Classify” everything

    If your plugin adds markup and/or content to posts and pages (probably via a shortcode), make sure you give every remotely important element a class. Then, if users don’t like the way it looks, they can add some CSS rules without too much difficulty.

Are there other things you like to see in plugins? Are there particular things done by plugin developers that get on your nerves and even stop you using a plugin? Comment below…

17 Comments

  1. Thanks for posting this list with regards to choosing plugins. There are so many options out there and this is very informative and helpful!

  2. You are right about All In One SEO. I still use it but never check the advertising banner.

  3. Hi thanks for an interesting site, good information!
    Thanks for the hint on SEO Plugin, I use that too.
    I have a question too, I would like to design my own unique wordpress theme but haven’t got any idea how to do about it. I have ideas which I haven’t found in other themes. I admit I haven’t checked the 1,000s of themes out there!

  4. I am just new as with regards to building wordpress plugins. But, I have developed my own and this list is a really good checklist for me. I will definitely use this checklist to check where the wordpress plugin I have developed is lacking or where it needs improvement. Thanks for sharing this.

  5. Definitely with you on point 8 – adverts in WordPress plugin admin screens are a waste of space – who would click them? When you’re using admin, it means you’re busy doing something – you don’t want distractions.

  6. absolutely, these are all valid points to be taken care of when you are developing plug-ins.

    quite an exhaustive list. hats off to the author for this great compilation.

  7. Some very good points here, I have developed a few plugins myself and would definately advise anyone planing to do so to pay particular attention to points 7 & 9.

  8. I was thinking about getting a WP plugin made, now I know what to look for. Thanks for the helpful info!

  9. Excellent article Andy, nice checklist to keep handy.

  10. 8. Avoid advertising

    I could not agree with you more. Half the time the plug-in admin page is 75% ads and 25% settings.

  11. WOW! I learned a great deal about plug-ins form this post. I was clueless as to how the makers of some plug-ins use code specifically for their advantage…..and then they turn around and ask for a link from you.

  12. 7. Avoid being sneaky

    I didn’t know the plugin I installed for my wordpress allow the owner to be able to “register an impression on their Google Analytics account”. Something to keep in mind, when I’m downloading a plugin.

  13. I’m looking for a reliable opt-in plugin for wordpress. I’ll be incorporating aweber email at a later date, but I need a quick fix while I generate my list. I tried subscribe2, but it won’t show in my sidebar. Any thoughts?

  14. Such a great post!

    Your list is wonderful

  15. Thank you for a great post. really helpful.

  16. ** ensure it’s compatible with the few people that run on a windows platform…

    Not using the correct directory separator syntax can cause a whole world of pain.

  17. These are great reasons. In addition on #7 I always check for any eval statements or javascript that loads from another server. I’ve had some plugins popup ads in the admin interface this way, which got prompted removed.

    Another good idea is to include screenshots of the plugin. Even if all you have is an admin panel, a screenshot can help show a potential user what they are getting.