Looking over some of my most recent work for a client, I saw that there may be a need for a new plugin with unique, custom features. But before you start working on a plugin, there are some things you should consider, first.
Now, I have created custom plugins before, but those were proprietary for specific clients and never meant to reach the masses. For my newest plugin idea, I am wanting to offer it up on the Internet for others to enjoy. But, what works in a single-purpose closed environment may not be what everyone else needs!
Identify your Plugin’s Purpose
Now, this is a no-brainer, right? You have to know what you plugin does in order to make it, sure. But what does it do that is so necessary that you must create a plugin for it?
Determine the Need for Your Plugin
If it’s something that is short and sweet, why not make it a shortcode? Shortcodes are quicker, serve a specific purpose and don’t require a user interface. If you know what your plugin does and why (or why not) it is needed, then you have identified your plugin’s purpose to exist on a wider scale. Take a look around the Internet and see if you can imagine your plugin in action. Does your favorite site lack a feature your plugin would provide? Do you think it can be done better than what you have seen on other sites? Have you, yourself, needed this feature for your site, but the plugins out there don’t quite check all the boxes that you need? Then your plugin may be necessary. And if you need something like that, others may too.
Take a Look at Other Plugins
You do a search for the plugin-type you are considering making. You see there are over 50 plugins like it. Don’t throw in the towel already. Just because there are other plugins out there that do some or even all of the things your plugin will do, that doesn’t mean your plugin isn’t needed! Take a look at the competition. Learn what they do. See what they need. And in the case that a plugin checks all the boxes your plugin will, too, take a keen eye to the plugin overall, not just the technical features.
Be the User – Understand what they Like
It’s true, you might have the same idea as another developer, but what about the interface? Is there plugin more on the technical side (built for developers) and less on the attractive side (built for general users)? If so, maybe you can put effort into your user interface and make it more attractive. Since both plugins would do exactly the same thing, maybe you will get a leg up on the competition if your plugin looks 5 times better and works more efficiently! User interface is important. Understanding that the majority of your users are looking for something with desirable features but easy to use. Many of them are not developers and aren’t comfortable around shortcodes, so taking the simple-but-powerful approach will get your plugin noticed.
Data Structures: Future-Proofing and Updates
Knowing what you want to do is fine, but what if you get an idea for a cool feature, later. How will you go about making that happen in the next iteration? Well, it’s not always as easy as releasing the change in the next version.
Why? Well, let’s say you chose to use JSON strings to hold data. With the release of your next update, you add some additional info into the JSON string. Those arrays and the code you use to manipulate them may not line up correctly. You may have changed your code to handle the new data sets but what about the older versions? Would your new update blindly overwrite the old data sets? If so, did the user just lose all of their settings?
And what if you modify a bit of CSS; Add a prefix here or there to make it easier to track and distinct from other potential plugins? Well, if you didn’t take into account your previous releases, you may have just ruined a user’s page because their custom CSS is targeting a selector that doesn’t exist anymore! Changing a class from .my-task to .jw-task to avoid future conflicts potentially just undid precise, custom design work of your users. Now they have to go back, track down the problem, etc. Not good.
So it is very important to consider these things ahead of time. Don’t be in a rush to get your plugin done and out the door. Use it from a end-user point of view, and make improvements from a developer point of view.