[wp-hackers] Sharing codebase between plugins

Nikola Nikolov nikolov.tmw at gmail.com
Tue Jun 17 08:48:45 UTC 2014


Hi Stephen,

I think in the end I'll have core shipped with every plugin by using
svn:external in each project that uses the core in order to keep everything
synced. And then I guess I'll figure out a way to load the newest version
of core in order to provide the best conflict-free functionality(since I
should be keeping some backwards-compatibility, but plugins that require
the newer version might break).

Thanks everyone for their comments,
Nikola


On Tue, Jun 17, 2014 at 12:03 AM, Stephen Rider <wp-hackers at striderweb.com>
wrote:

> Hi Nikola --
>
> #1 -- I wouldn't worry too terribly about size.  Is the plugin multiple
> megabytes of data?
>
> #2 -- You might take a look at my own Strider Core.
> https://code.google.com/p/strider-core/
> Feel free to borrow the "best version" mechanism for your own purposes,
> but if you do, PLEASE be sure to change all "strider_core" strings to
> something else -- Very Important.
>
> Stephen Rider
>
>
> On Jun 5, 2014, at 8:56 AM, Nikola Nikolov <nikolov.tmw at gmail.com> wrote:
>
> > I see,
> >
> > I have a couple of concerns with such an approach though:
> >
> > #1 Size - the core plugin is actually going to consist of multiple
> > directories, scripts, images, etc. so it's not really efficient to have
> it
> > included in each and every one of the extra plugins.
> > #2 Updates - using your approach is difficult to use a specific version
> of
> > the library. Say the user updates one of your plugins, but not the rest.
> > Then you might use the latest version of the library, or an old version
> of
> > the library(in which case, you might get fatal errors, due to undefined
> > functions, etc.)
> >
> > Thanks for sharing though,
> > Nikola
> >
> >
> > On Thu, Jun 5, 2014 at 4:52 PM, Guus (IFS) <
> guus at inspiration-for-success.com
> >> wrote:
> >
> >> I am using a library file with some useful stuff in multiple plugins and
> >> just set a constant to check if the code is already included.
> >>
> >> <?php // start of library file
> >> if (!defined('_MY_LIBRARY_FILE_INCLUDED')) {
> >>   #define('_MY_LIBRARY_FILE_INCLUDED',true);
> >>   libraryFunction1() {
> >>       // code
> >>   }
> >>   libraryFunction2() {
> >>       // code
> >>   }
> >> }
> >> // end of library file
> >> ?>
> >>
> >> -----Original Message----- From: Nikola Nikolov
> >> Sent: Thursday, June 05, 2014 5:27 AM
> >> To: wp-hackers at lists.automattic.com
> >> Subject: [wp-hackers] Sharing codebase between plugins
> >>
> >>
> >> What do you do when you want to avoid code duplication by sharing the
> same
> >> code base between multiple plugins?
> >>
> >> Here's the situation that I'm in:
> >>
> >> I have a plugin that adds some custom post types and functionality.
> Another
> >> plugin that uses similar functionality is going to be developed.
> Possibly
> >> in the future more plugins that use those post types will also be
> created.
> >>
> >> So the idea is to separate out a "core" plugin that will allow any of
> the
> >> plugins to function both on their own and combined, without having to
> ship
> >> the code with each one(well - probably we'll need at least an archive of
> >> the core plugin).
> >>
> >> Now my question is how to handle that dependency(note that my client
> would
> >> prefer if the core plugin is not listed on the plugins page - not sure
> if
> >> that's really possible).
> >>
> >> Right now I've thought about the following solutions:
> >> - Have each of the plugins contain a .zip archive with the core plugin.
> >> Then perhaps use https://github.com/thomasgriffin/TGM-Plugin-Activation
> in
> >> order to define the dependency in each plugin. I'm just not sure how it
> >> would handle updates - so when the user updates a sub-plugin it should
> >> update the core plugin if the sub-plugin is bundled with an updated
> version
> >> - Copy the core plugin as a mu-plugin if it's not already there. Again
> not
> >> sure how to handle updates. Also when should I copy the plugin files -
> what
> >> if FTP credentials are required?
> >>
> >> I think my main concern are updates.
> >>
> >> For instance how to make sure that I'm using the correct core base?
> What if
> >> the user updates one of the sub-plugins and that updates the core
> plugin,
> >> but they don't update the rest of the sub-plugins? Ideally I should have
> >> things compatible between versions, but what if I have to introduce a
> >> change that is not compatible?
> >>
> >> I also looked at the Plugin Dependencies plugin (
> >> https://wordpress.org/plugins/plugin-dependencies/ ), but I don't
> really
> >> want to add another plugin to the bundle.
> >>
> >> Thanks,
> >> Nikola
> >> _______________________________________________
> >> wp-hackers mailing list
> >> wp-hackers at lists.automattic.com
> >> http://lists.automattic.com/mailman/listinfo/wp-hackers
> >> _______________________________________________
> >> wp-hackers mailing list
> >> wp-hackers at lists.automattic.com
> >> http://lists.automattic.com/mailman/listinfo/wp-hackers
> >>
> > _______________________________________________
> > wp-hackers mailing list
> > wp-hackers at lists.automattic.com
> > http://lists.automattic.com/mailman/listinfo/wp-hackers
>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>


More information about the wp-hackers mailing list