A plugin is a module of code that can be dropped into a directory and enabled, to give a CMS extra capabilities.
Plugins need to be able to change the output and do other tasks, so it is necessary to add various "hooks" throughout the code where the plugins can apply their code.
A very important reason for adding a plugin architecture to a CMS is that it lets you stabilize the core code. The core is basically the code that will be available in every instance of the CMS, as opposed to plugin code, which may or may not be present in any particular instance of the CMS.
With a core piece of code that is deemed "complete", it becomes easier to manage bugs. Because you are not always adding to the core code, you are not actively adding to the potential number of bugs.
In a CMS which does not have a stable core, any change to the central code can affect just about anything else.
You really need to get your CMS to a stage where you are no longer developing the central engine. Instead...