Make WordPress Core

Opened 10 years ago

Last modified 2 years ago

#20241 accepted enhancement

make it possible for plugins to activate other plugins

Reported by: magnus78 Owned by: nacin
Milestone: Priority: normal
Severity: normal Version:
Component: Plugins Keywords: has-patch needs-unit-tests needs-refresh
Focuses: Cc:


When creating a plugin that depends on other plugins, i would like to enable those plugins during activation of the main plugin.

This is currently not possible, as updates to active_plugins done by the other plugins get overwritten.

Please apply the attached patch to fix this.

Attachments (4)

allow_plugin_to_register_other_plugins.patch (1.9 KB) - added by magnus78 10 years ago.
proposed fix
allow_plugin_to_register_other_plugins_v2.patch (2.1 KB) - added by magnus78 10 years ago.
proposed fix
wptrac20241_allow_plugin_to_register_other_plugins_v3.patch (2.5 KB) - added by magnus78 10 years ago.
proposed fix, v3
20241.diff (7.3 KB) - added by nacin 8 years ago.

Download all attachments as: .zip

Change History (19)

#1 @magnus78
10 years ago

Proposed fix 2 to take care of the sitewide version too...

#2 @magnus78
10 years ago

Anything i need to do to move this patch forward?

#3 @kurtpayne
10 years ago

  • Cc kpayne@… added
  • Type changed from defect (bug) to feature request

scribu has done a nice write up on dependency management in plugins

And he's written a plugin to handle dependency management, too

#4 @nacin
10 years ago

These changes could potentially break backwards compatibility.

Dependencies aside, this is doable without any patch. You can use the activated_plugin hook, which fires after the option is updated. For deactivation, you could simply choose a later hook (even something like 'shutdown' would work, as would option_active_plugins).

#5 @magnus78
10 years ago

Child plugins would indeed be nice, but it doesn't need to be either or. I'd see this patch more as a code fix than an actual feature...

How would it break backwards compatibility?
It's not doable without a patch afaikt. activated_plugin is run for every plugin not just *this* plugin like i want, i tried that first but ran into problems with plugins getting included multiple times (causing errors) and other strange problems.

Re option_active_plugins - did you mean updating the active_plugins option manually? That won't let the registration hook for each plugin run.

#6 @magnus78
10 years ago

  • Type changed from feature request to defect (bug)

V3 fixes a problem with the patch wrt multisite.

Anything more i need to do?

#7 @coffee2code
10 years ago

  • Type changed from defect (bug) to feature request

#8 @magnus78
10 years ago

I do see it as a bug fix, as it's not said anywhere that it shouldn't work, and i see no reason it shouldn't. If for some reason the fix isn't wanted, it should at least be documented that you're not allowed to activate other plugins from the registration hook.

#9 @stephenh1988
10 years ago

  • Cc contact@… added

#10 @nacin
8 years ago

  • Component changed from General to Plugins
  • Milestone changed from Awaiting Review to 3.7
  • Owner set to nacin
  • Status changed from new to accepted
  • Type changed from feature request to enhancement

8 years ago

#11 @nacin
8 years ago

  • Keywords commit added


  • Re-queries the active_sitewide_plugins or active_plugins options before modifying them in activate_plugin(), once hooks are fired.
  • Waits until saving options in deactivate_plugins() to query and manipulate them.
  • Cleans up some hook documentation.

#12 @nacin
8 years ago

  • Keywords needs-unit-tests added
  • Milestone changed from 3.7 to Future Release

This could benefit from unit tests.

#13 @kucrut
8 years ago

  • Cc… added

#14 @chriscct7
6 years ago

  • Keywords needs-refresh added; commit removed
Note: See TracTickets for help on using tickets.