I have always been a proponent of making data-driven decisions. While working at New York University as a Web Publishing Consultant, I often found myself writing custom code and SQL queries to gather data around the WordPress multisite installation. In the 2 years since I helped launch this service, it has become the second-largest tech service within NYU and we are currently supporting over 5000 sites serving NYU’s global community of 300,000 users. I wanted a better solution for this that didn’t require writing ad-hoc queries and scripts. So I developed and published a WordPress plugin that helped me make decisions quicker. Hopefully, it helped/helps other WordPress users.
WPCampus
At WPCampus, I talked about the importance of insights into multisite at WP Campus. You can find the session video and slides here – WPCampus Session.
This session provides insights as to how we at New York University run and manage our multisite with 5000+ sites. It covers a few tips and tricks we use on daily basis for aspects such as:
- Our semi-automated plugin/theme update process
- Using version control for code changes/deployment
- Automated syncing of Development and QA environments from production
- Enhanced site creation capability over wp-signup.php page
- Use cases covered in our service
- Migrating from one hosting provider to another
- Importance of insights into multisite
Importance of Insights into Multisite
My talk in the WPCampus session focused on the importance of analytics and insights into WordPress multisite installation. We all know how important it is to get insights into your network. For example, anyone running a multisite WordPress environment might have had the following questions at some point:
- How many sites are being created and when?
- What is the most favorite theme or a plugin among all the sites?
- Are all my plugins compatible with latest WordPress version?
- Are any of my 10000s sites getting spammed?
- Is some user misbehaving within my multisite environment which affects overall network performance?
- How are my users connected to each other through different sites?
When you can’t get answers from Google Analytics (Which only tracks your website traffic), we need a plugin that can provide such answers. When we found out none of the existing plugins quite answer these questions, I decided to develop a plugin that can answer any of the above questions and much more.
Using the data generated by this plugin, we have some of the most interesting stats from New York University’s Web Publishing service of a large-scale multisite WordPress environment. These slides show how NYU decides migration strategies when replacing/retiring a plugin/theme based on its usage. We also use the stats to send targeted communication to selected users. e.g., admin of a site that has more than 1000 attachments or all the users who use a specific plugin/theme if we want to decommission it. The plugin helps with deciding strategies for maintenance, migration, improvement, and addition/removal of features.
Plugin Features
- Background processing
- For generating new statistics for the network
- This allows you to safely generate stats without compromising the performance of your large multisite network
- Selective stats
- You can selectively generate the stats you need – Sites Stats, Plugins Stats, Themes Stats, or Users Stats
- Ability to fine tune batch processing settings
- Splits the task into a configurable amount of chunks
- Protected network admin settings
- Notification when the stats are available
- Analytics Dashboard
- View/Export useful network statistics related to sites, users per site, plugins per site, themes, and plugins for all the sites in a WordPress multisite network.
- D3 Visualizations
- Generates set of CSV files corresponding to different types of stats
Codebase Features
- The Plugins is based on the Boilerplate which in turn is based on Plugin API, Coding Standards, and Documentation Standards
- All classes, functions, and variables are documented so that you know what you need to be changed
- The plugin uses a strict file organization scheme that correspond both to the WordPress Plugin Repository structure, and that make it easy to organize the files that compose the plugin
- The project includes a
.pot
file as a starting point for internationalization
One thought on “Making Data-Driven Decisions”