MultiSite, Plugins and Activation in Wordpress


Yes, its possible! WordPress offers for normal Plugins the hook register_activation_hook();

This is active right after the activation of a Plugin, so you can start small installation scripts. But if we are in a MultiSite environment (old: MultiUser) and put the Plugin in the folder wp-content/mu-plugins, then the hook doesn't do anything, because the Plugin is automatically activated. But there are few ways you can still have a kind of activation hook. 

One is this option:

  • if ( ! class_exists( 'my_mu_plugin' ) ) {
  • if ( function_exists( 'add_action' ) ) {
  • add_action( 'plugins_loaded' , array( 'my_mu_plugin', 'get_object' ) );
  • }
  • class my_mu_plugin {
  • static private $classobj = NULL;
  • public function get_object () {
  • if ( NULL === self :: $classobj ) {
  • self :: $classobj = new self;
  • }
  • return self :: $classobj;
  • }
  • public function __construct () {
  • // Fake-Activation-Hook
  • $this->activation();
  • }
  • private function activation () {
  • if ( 'activated' == get_blog_option( 1, 'my_mu_plugin_activated' ) ) {
  • // Do Stuff during activation
  • ...
  • // Update Option
  • update_blog_option( 1, 'my_mu_plugin_activated', 'activated' );
  • }
  • }
  • }
  • }
We are doing the following: We check whether a certain option is set in blog 1, if not, then run through an activation function, otherwise do nothing - Blog 1 simple so that the install script is only in blog 1 in use. If you want to use it in all the blogs then simply use the function get_option().

{ 0 comments... read them below or add one }

Post a Comment