Each developer researches and analyzes requirements for the project before he/she starts the implementation.
Or at least all good ones do that.
One of the basic development rules says the code should be re-usable. Technologies, libraries, frameworks, and others are created to make all tasks easier and faster for developers.
It all sounds very logical, but still new products appear. Why?
Let’s think a little about the popularity of WordPress. Some features can be an advantage for one developer, and disadvantage for others. A problem always has a cause, and at the same time development need to start with requirement.
Can WordPress solve so many different scenarios efficiently?
Common cases are unlimited
There are hundreds or thousands different cases which can be solved by a universal algorithm, but at the same time you can find another example and this one will not work as you want. Popular and common problems should be handled by the same tool if possible, but here comes the next question. Is my problem one of those many that can be solved?
WordPress is the most popular and well known Content Management System in the world. I used the term CMS intentionally, because WordPress was a blogging platform many years ago.
Since developers started to solve more and more cases this tool evolved to a complex code and could be used for other purpose as well. Users launched web portals and e-commerce shops, 3rd party teams created various plugins, and the community supported all of them.
WordPress is a great example of open source idea success, but can it be used in every case?
A unique scenario happens often
Cheap hosting and user-friendly installation processs allow everyone to create personal webpages based on WordPress. The potential problems show when people try to achieve various goals with dozen of plugins. The WordPress code is a little old, with history over decade starts as simple platform.
On popular projects back compatibility and legacy code are huge issues.
WordPress is a quite good tool for editors to create content.
The developer’s opinions about the same product are totally opposite. How it possible that great tool is badly written at the same time?
The answer is simple when you analyze and compare the code more deeply. The architecture is based on global variables and functions are not modern and object oriented. Maybe wrong decisions were made in the planning stage, In any case the implementation could be better.
Many points for injecting your code and cooperate with WordPress requires specific design and workflow. Plugins can be written by any developer, even totally unexperienced. No development project is perfect, but at least one can try.
Global variables cause trouble
WordPress gives developers many possibilities to solve their tasks. This flexibility does not give you feedback about which one is right and best.
For example the `get_template_part()` function is very useful to create templates with small partials. It’s recommended to fetch small pieces of common code used for design.
Including partial template in a child theme is very popular, because you want to inherit templates from the parent template more often than duplicating very similar code. The function `get_template_part()` tries to include partial templates from a child theme, otherwise from parent theme. It’s absolutely correct, but troubles happen when your partial template uses some global variables, different than global variables defined for WordPress.
Global variables cannot be accessed in function if they are not defined as global in local scope. You could modify `get_template_part()` function, but changing WordPress core code is not recommended, because can be overwritten during update. Only way to solve this problem is creation own function which include localized template partial.
Out of control
Other problems can caused by plugins. It is possible that a new WordPress version will not support your latest plugins. Even popular plugins can become incompatible after an update. You can develop you own plugins to be sure about full support, but there are some risks still. The WordPress Team cares a lot about back compatibility, but with new features and versions code changes.
Users have to be aware that WordPress is insecure. It can be said like that easily, because open source is public, and accessible for everyone. Even recent version can have security vulnerabilities, so all unauthorized people would get access to your webpage. There are many hackers trying to attack WordPress every day worldwide. It depends how important you website is from business view, and how it looks when someone hack it?
Can you allow this? Definitely not.
Important decision
Finally I will say that WordPress is a good tool with a bunch of features at the initial point for creating a webpage. In this case there too many advantages to invest time and resources to create own solution for handling common tasks.
On the other side: When you have a clear vision about a product which does not fit to WordPress´ frames then it’s much easier to create your own platform than to deal with WordPress.
Managing and delivering solid written code for the right purpose will make less issues in the future and save time for better development.