wpsight / wpcasa

WPCasa WordPress Real Estate
https://wpcasa.com
GNU General Public License v2.0
42 stars 23 forks source link

Build integration system #102

Open JoeHana opened 4 years ago

JoeHana commented 4 years ago

Is your feature request related to a problem? Please describe. Having multiple integrational plugins (eg. WPCasa Contact Form 7, WPCasa Gravity Forms, WPCasa Polylang,...) available causes unnecessary overhead and is rather complicated to maintain (compared to other options). In Fact there is no real advantage of having integrations available in separate plugins since in the majority of cases the codebase is quite small but still it generates an additional layer of complexity by having users installing the specific "bridge" plugin in order to gain additional features.

Describe the solution you'd like A simple way to easily add integrations directly in WPCasa. An integration can still be executed by a separate plugin, but those maintained from WPCasa will then go directly into the core plugin, and are only enabled when the main plugin of the integration is installed and active (eg. Polylang, Contact Form 7,...) and the specific option to enable the integration is active.

Integrations which will be build directly into WPCasa overtime

Additional context Attention: An integration in our context is some specific code and functionality which aims to add support for another WordPress plugin (or functionality). Integrations for 3rd party services (eg. 3rd party platforms to import/export property data from) will be handled differently. This is a very crucial and quite complex step. We need to take care about many various things and should implement and introduce this system very carefully.

For example lets take Contact Form 7. As soon as we publish the version of WPCasa which includes the integration for Contact Form 7 we need to take care about those cases where

Last but not least we need to figure out a way to phase out WPCasa Contact Form 7 after some time and fully remove it from the Repo.

And the same goes for every single integration which doesn't currently exist as a separate plugin.