WordPress is an opensource tool for creating websites, web stores and a lot of other things on the web. It can be used for a simple blog or for an advanced web application.
We use it as our primary base for most of our projects, because we found it to be really easy to handle and easy to understand what it does.
It has two entry points where you can adapt it to your final project. One is themes and the other plugins.
A WordPress theme provides all of the front end styling of your WordPress site.
On the other hand, the WordPress plugin is usually meant for an additional functionality that you would like to add to your website. Here we are talking about social media integration, web stores, search engine optimization tools etc.
WordPress already has tons of plugins that make your life easier when developing a website, adding functionality or managing it. But in some situations, a custom plugin is the only applicable solution.
When and Why I write my own plugin:
- Solution is so simple to write, that it would take more time to find the right plugin set the settings and later take care of updating it
- Existing plugin is to complicated to use by a client. I have no greater feeling then when I see a client using our solutions with ease and after months of using it, still receiving compliments of how easy and functional the solution is.
- When performance impact is not acceptable. There really is a lot of solutions out there, but some make your website so slow, we simply can’t accept it. Most of our time we spend viewing, developing and managing websites and if opening a page takes 3 additional seconds on top of every other functionality we don’t care, this functionality needs to be optimized / custom developed.
- There are some third party solutions, we have to connect to but … Most of the time solutions like that exist but … not in the way our client is using that third party solution. To make a simple example: Client is using google calendar for tracking the inventory (I am not kidding), accountant is filling field for client who bought something with the information of the store where product was bought etc.
- Maintenance would take more time over the next year or two. Sometimes plugins change / upgrade in unexpected way or implementation of plugins functionality must be used in unwanted way. In situations like that you know that maintaining website will be pain in the ass every time you hit the upgrade button. Believe me, you don’t want to schedule the whole day for upgrading one website because you don’t know if everything will go smooth or everything will break apart.
- Existing plugin does not offer proper way of implementing additional functionality. Sometimes the existing plugin is everything you wanted as a core functionality but in the end you need to change one line of text, change the color of a button, add one more option or have one more condition. WordPress has a great way for developers to allow other developers to implement their functionality. It is called hooks. If a plugin is well developed it allows us to make functionality changes without the need of changing the existing plugin files. If not I have no other way then to change the files in that plugin (no, I am not going on that path ever again) or find another solution / write it myself.
- When I feel sad and would like to create some tool, that will make my life or my team’s life easier. Those plugins usually have nothing in common with a project we are currently working on but it gives me the additional drive I need to complete the project goals.
The main benefit of custom plugin is understanding the way plugin works which give me the power to implement new functionality and customizations much faster. This leads to freedom to make user experience the way client will understand it and give the client another candy in the world of web.
When and Why I do NOT write my own plugin
- Maintaining the plugin is to expensive for client. Sometimes you can write a really good solution but if this solution is for one client only all the maintenance costs will be on clients side. Most of the cases here we are talking about the country laws that change constantly. Third party services that offer new and new functionality or better ways to implement. Security maintenance time needed.
- Requested solution would take too much time with very small value to clients. Sometimes the idea is reasonable but it just takes too much effort for no added value at this point. Thinking in advance is not the same as predicting a situation in the future. Your web application can have Facebook and Google sign in functionality but only 50 visitors a day and slow growth will not pay off the development of that functionality for now.
- Not enough time to understand the idea, think, develop and test. If you need that solution today it better be worth changing all my plans and taking the responsibility when this solution goes live.
- Someone has already made a better solution. And the developer deserves to be promoted and well payed for the need his solution fulfills. I usually fully test and review those plugins and at the end my client and I are both satisfied.
Being a developer with a capability to make such solutions for clients is a unique kind of fun and satisfaction. Any new idea or request from a client usually means a present under the tree. The only thing left to do before starting the project is business, everything else is joy.
Any challenges for us? Let me know at matevz (at) 2gika.si .