Yesterday I finally put up on GitHub something I’ve been tinkering with for a while. I’m calling it Network Manager Tools. In the simplest description, it is a WordPress plugin that provides several tools that are helpful for managers of multisite networks.
Originally it started simply as a way to be able to see what themes and plugins were in use across the network. The way WordPress multisite is designed, that information is stored in the options table for each individual site. All of the existing plugins I tried would time out when attempting to query that data across networks larger than a few hundred sites. Since I had one with over 5,000, I needed another solution.
So I wrote one from scratch that did direct SQL queries instead of using switch_to_blog(). That worked fine for a while, but now that same network has over 8,500 sites and the simple plugin was beginning to show its limitations. So I rewrote it from scratch.
This new version stores that data in a separate table and hooks in to automatically update it on theme change or plugin activations/deactivations. It has a number of other nice features, like incremental search across the entire table, so it handles partial matching on sitename, themes or plugins. Eventually I plan to add filters to quickly limit by theme or plugin, so you don’t have to only use on the search portion, or query/load data you don’t need.
It also includes an early version of a plugin manager that makes plugins work the same way as themes, allowing them to be enabled/disabled for activation by single-site admins on a network-wide or individual site-by-site basis. In addition, this plugin manager module (what I’m calling the various functionality portions for lack of a better term) adds a plugins tab to the site-info.php screens to allow activation/deactivation of plugins from the network dashboard. The plugin manager is still rough around the edges, but it works.
Feel free to submit pull requests, issues/bugs, suggestions or whatever. It’s still pretty much beta version and needs a lot more testing, but I wanted to get it out there for feedback.