“I want to add a feature, but it should be easy because I found a plugin.”
I hear variations on this a lot from clients. If a plug-in is found that can do what the client is looking for, it’s often assumed it’s an incredibly simple execution. I mean, just go to Plugins > Add New and activate it, right? How hard can it be?
If only it were that simple. Here is why it isn’t:
Most plugins that are bringing any kind of significant functionality to the table are going to require some additional styling. You know your beautiful theme that you or your designer worked so hard to create? If it didn’t include a design for the store, activating WooCommerce likely won’t result in what you envisioned. If you have a plugin that adds a store locator or a job listing page, it likely will need some CSS love to get in line with the rest of your site. Unfortunately, while a plugin may provide the base functionality you’re looking for, it is rarely a matter of simple activation and you have a new functionality piece that is perfectly consistent with the rest of your custom design.
Typically, I try to avoid relying on plugins for most functionality. It’s entirely possible that given what you’re trying to achieve stylistically or functionality-wise, it would make much more sense to execute differently. For example, if you want to add a plugin for job listings, it might make more sense to approach that piece as a custom post type and the styling flexibility that offers vs. go the plugin route and deal with the default layout and behavior there. Just because a plugin exists, it doesn’t mean it is the best solution.
As covered in a previous blog post, not all plugins are coded equally well. Some don’t follow best practices and can create script conflicts or other issues with the rest of your site. By bringing a new plugin into the mix, it can result in additional development time to get it to play nice.
#4) Additional Testing
With any new functionality piece, you’re potentially introducing new issues that could surface in cross-browser or cross-device testing. Maybe the plugin doesn’t behave well responsively, for example. There is definitely the potential to incur additional development time troubleshooting that plugin and its functionality.
Overall, while a plugin may seem like a perfect and easy solution to adding additional functionality to your project, there are some implications on the development side that can make it far from an “easy” implementation and may impact development accordingly.