A lot of steps go into building a WordPress plugin. I’ve released many premium plugins, free plugins, and even one plugin in the WordPress.org repository.
Today I thought I’d talk about what it actually takes to build a plugin, whether it’s free or paid.
First you have to have an idea
Even just having an idea is tough! If it’s a free plugin then you can pretty much just release whatever you want. If it’s useful to you, then package it up into a plugin and give it to others. Even if no one wants it, it’s not a huge deal because it’s free.
But if you’re thinking about building a premium plugin, then you need to do market research first.
Is this a plugin people actually want?
- Do you know people who have a problem?
- Can you solve that problem?
- Will people pay to have that problem fixed?
You need to know that your audience and market is there before you spend hours/days/months/years building your perfect plugin.
Build the actual plugin
Once you have a good idea, you can spend time building the actual plugin. Depending on what you’re making, it can be a quick process, only taking a few hours or days, or it can be a super long process and take weeks, months, or even years.
Plan ahead!
When creating your plugin, you need to think about structure and how everything will fit together. It’s important to think about this BEFORE you actually get started, otherwise you’ll just keep piling code on top of code.
I had that problem with the Ultimate Book Blogger Plugin. I knew what I wanted the plugin to do, but I didn’t look very far into the future. So as the plugin grew and changed over a few years, I just piled more code on top of it. Now, years later, the code is pretty messy. That’s why my big project right now is re-building UBB from the ground up. I’m doing a much better job planning the plugin and thinking about how it might grow into the future.
Testing (internally)
A huge step is testing the plugin internally. By that I mean you—the developer—running some tests on your own. A few tests would include:
- Coding with debug mode on. This is so you can be aware of any coding warnings/notices/errors on your part.
- Testing with some popular plugins/themes to make sure they’re compatible.
- Trying to anticipate what your users might do, by trying a variety of settings combinations and usages to ensure that everything still works.
You can get a lot done testing the plugin yourself, but usually you know how things are supposed to work, so you tend to do them a certain way. Often times the users of a plugin WON’T know how it works so they might screw up the settings or do things unexpectedly. You have to be prepared for that.
…which leads us to…
Testing (with other people)
This is when you give the plugin to other people and let them rip it apart!
It’s important to get feedback in a few different areas:
- Things that are actually broken (coding problems)
- Things that work but are unclear (UX/instructions problems)
- Things that aren’t included in the plugin, but they would like to see
Find a way to deliver updates
This is only applicable if you’re not submitting the plugin to the WP.org repo for free. You need a way to send updates to your customers directly inside WordPress. No one wants to have to go back to their account page, re-download the plugin, uninstall it from their site, and re-install it all over again.
They want updates inside WordPress and automatically.
I use the Software Licensing extension for Easy Digital Downloads. It’s well worth the $82! That’s an affiliate link, but I love this product and use it on my own shop!
Write documentation
Some plugins are very straightforward and don’t require a huge documentation page. But the more complex your plugin is, the more people will need guidance on how to use it. You’ll want to provide your customers with instructions such as:
- How to install the plugin
- How to configure the settings and what the settings do
- How to use the plugin itself
Be prepared to offer support
This is particularly true if you’re releasing a paid plugin. No one wants to dish out money for a product and then NOT get help and support when they need it. If you want a successful business, this is something you must offer to your customers.
There are two main ways you can provide support: through a private ticket system, or though a public forum.
- Ticket System: Awesome Support Plugin
- Public Forum: bbPress Plugin
You also need a clear set of terms that dictate what you will provide support for and for how long. Example:
- You will provide help installing and configuring the plugin.
- You will not provide help for customizing the plugin or changing its code.
- You will not provide support for other plugins that are conflicting because those other plugins do not follow proper coding standards.
- You will offer support for up to one year after the purchase date. Support can then be renewed after that.
Creating a plugin is a big job
But it can also be very rewarding (and profitable!). I think the single most important thing is keeping your customers happy. Offer solid support, treat them well, and they will appreciate it. That’s they key to repeat business and excellent word of mouth sales!
Very unique and good read! I’ve wanted to learn more about building WordPress themes+plugins. I’ve wondered how other people have offered the whole support ticket thing. Thanks for giving the heads up on the awesome support plugin.
Support is a very critical and delicate thing. I’d imagine it would get bothersome and time-consuming to have to constantly respond and resolve support questions (especially when there are more pressing things to do). There is a happy medium to strike with offering support! It’s weird whenever a person releases a plugin and then they’re like “Sorry, I don’t offer free support. Bye.” and people are left wondering how to navigate the plugin, get frustrated, and end up not using it. Not so good! Haha.
Thanks for taking us behind the scenes!
It is a LOT of work. What an understatement.
I’m interested in UBB but I’m only reviewing books in one genre — Kid Lit.
Therefore, “Reviews by Genre” won’t work.
I want to use tags like “genre” in my blog.
For example, there would be “bilingual/multilingual,” “adopted,” “single parent family,” “addresses social class issues,” “addresses racism,” “mixed family.”
Amazon groups a lot of childrens books that don’t have white middle class protagonists into “multicultural.” It takes HOURS for me to find a book that fits my needs. It also doesn’t help that LESS than 12% of American children’s books published each year feature non white protagonists.
Is there a way for bloggers to sort books by our tags automatically? This plugin is really appealing because it sorts books and indexes them automatically.
so for example…
It might be…
REVIEWS
Reviews by Author
Reviews by Date
Reviews by Eva’s Tags
Reviews by Publisher
I’m just throwing ideas out there. It’s like a recipe index but more customizable.
Thanks!
Just because it’s called “Genres” in UBB doesn’t mean you have to use it as such. There aren’t pre-defined genres listed for you to select from. You add your own (much like you would categories). So you could add things like “Adopted”, “Single Parent Family”, etc. and use those as your “genres”. 🙂
thanks!
this is really helpful. 😀