In my new position at WebDevStudios, I’m wading deep into the world of WordPress multi-site functionality. In version 1.2 of Toppa Plugin Libraries, there’s a new method which makes it easy for plugin authors to make their plugins WordPress multi-site compatible. It is based on the excellent code Shibashake made available for doing this. I took that articles’s 3 separate (but almost identical) functions for activating, deactivating, and uninstalling a plugin, and abstracted them into a single method. Why? Because “duplicate code is the root of all evil in software design.”
As a plugin author, all you need to do is write your activation or deactivation function as you normally would, and then:
$functionsFacade = new ToppaFunctionsFacadeWp(); $functionsFacade->callFunctionForNetworkSites('yourActivationFunction');
This will call your activation (or deactivation) function for every site in the network, including the parent site.
Or in an object context, after passing the FunctionsFacade to your object:
For uninstalling, you need to pass a 2nd argument, which indicates that the “networkwide” flag should not be checked (for some reason, WordPress multisite uses this flag for activating and deactivating plugins, but not for uninstalling).
$this->functionsFacade->callFunctionForNetworkSites(array($this, 'yourUninstallMethod'), false);
I’m going to release the next version of Shashin soon, which uses this method to make it multi-site compatible, so I wanted to get this Toppa Plugin Libaries release out first. Enjoy!