Within its core, WordPress provides a feature called ‘Multisite’ which traces its origins back to 2010 at the launch of WordPress 3.0. Since then it has received a number of revisions aimed at introducing new features and tightening security.
In essence, a WordPress multisite can be thought of as this: A University maintains a single installation of WordPress but each faculty maintains their own WordPress site.
Multisite is a feature of WordPress that allows multiple sites to share a single WordPress installation. When multisite is activated, the original WordPress site is converted to support what is usually referred to as a
network of sites.
This network shares the file system (meaning
plugins and themes are also shared), the database, the WordPress core files, the wp-config.php, etc.
This means that WordPress, theme, and plugin updates need to be performed only once for all of your network sites as they share the same files on the filesystem.
This fact is one of the main advantages of multisite, as it allows you to grow the number of sites you manage while keeping the number of tasks you need to perform to maintain your customers’ sites the same.
Subdomain or Subdirectory?
There are two modes of running WordPress multisite – and you need to choose one when converting your regular WordPress installation into a multisite installation:
Subdomain: ex.: site.domain.com
Subdirectory: ex.: yourdomain.com/site
Each mode has advantages and disadvantages that you need to take into consideration when making this decision.
One thing is important to note, though: once you make your decision, changing your network from subdirectory to subdomain or vice-versa is really hard – especially if you already have a handful of sites created.
Before making that decision, here are a couple of points to keep in mind:
Subdirectory Mode is the easiest mode in terms of setup and maintenance. This happens because all the sites are just paths attached to the main domain (e.g. yourdomain.com/subsite). As a result, you only need
one SSL certificate for the main domain and that will cover the entire network.
At the same time, due to its URL structure, Google and most other search engines will consider all subsites on your subdirectory-based network as one giant site. As a result, content added to subsites by your end-customers might affect the SEO performance of your landing site, for example. The level of impact is debatable and there is an argument to be made that having such an arrangement can even be beneficial for SEO performance.
Subdomain Mode is a bit more complex to set up, but its URL structure (e.g. subsite.yournetwork.com) is generally perceived to look “more professional”.
One of the main challenges in setting up subdomain mode is SSL coverage (HTTPS) for the entire network. It comes down to the fact that browsers consider subdomains to be isolated entities. As a result, you’ll need a different SSL certificate for each subdomain on your network, or a special kind of certificate called a
Wildcard SSL certificate. In recent years, hosting providers and panels are upping up their game in terms of SSL provisioning and some offer wildcard certificates at the click of a button, closing the gap between the two modes in terms of complexity in setting it up.
In contrast to subdirectory mode, subsites on a subdomain-based network are considered by search engines as separate websites, which means that content present on one subsite does not interfere with the SEO performance of other subsites at all.
The Super Admin
Single-site WordPress installations allow you to add an unlimited number of users and give those users different user roles with different permissions.
In WordPress Multisite, a new type of user gets unlocked:
the super admin – and a new admin panel gets unlocked:
the network admin panel.
As the name implies, the super admin has superpowers over the network, being capable of managing all of its subsites, plugins, themes, everything!
Once you convert your single-site WordPress installation into multisite, the original admin of the single site will be automatically upgraded to super admin.
Plugins and themes can only be installed or uninstalled from the network admin panel by super admins. Subsite admins can then choose to activate or deactivate those plugins or themes unless the super admin network activates a plugin, which forces it to be active for all subsites all the time.
Note: as you can see, inviting someone to your network and granting them super admin status gives this user total control over your network. As an example, other super admins can even remove your super admin status, effectively locking you out of your own network admin panel. In order to allow WP Ultimo customers to have granular control over what additional super admins can do, we have an add-on called Support Agents. This add-on allows you to create yet another kind of user – an agent – with only the permissions they might need to perform their tasks on the network.
What is shared among subsites and what is not
As we mentioned before, one of the key advantages of WordPress multisite is that all the subsites are sharing the same configurations, core files, themes, plugins, WordPress core files, etc.
There are, however, elements that are nicely scoped on a per-subsite basis.
- For example, each subsite gets its own uploads folder. As a result, uploads made by users of one particular subsite cannot be accessed on another subsite.
- Each subsite has its own dedicated admin panel and can activate or deactivate plugins or themes unless they were network active by a super admin.
- Most database tables are created for each subsite, meaning that posts, comments, pages, settings, and more are scoped for each subsite.
User management on WordPress Multisite
One delicate subject on WordPress multisite is user management. The WordPress user table is one of the few that is shared among all subsites.
This arrangement can generate some issues depending on what you’re planning to build with your network. The example below helps to illustrate the most pressing one.
Imagine the following scenario:
You create a WordPress multisite network and start to offer subsites for a monthly fee to people that want to have an e-commerce store.
You get your first paying customer – John. You create a site for John on your network, install all the necessary plugins, then create a user for John so he can manage his store.
Then along comes a second customer – Alice. You do the same thing for her and she now has a store on your network as well.
John and Alice are both your customers, but they don’t know each other. More importantly, if one of them visits the store website of the other, there’s no way to know that this store is being hosted on the same network of sites.
One day, John needs to buy a new pair of shoes and he finds the perfect ones in Alice’s store. When he tries to finish up the purchase, he gets an “email already in use” error message, which is bizarre as John is 100% sure this is the first time he has ever visited Alice’s website.
What happened here is that John’s user is shared across the entire network so when he tries to create an account to checkout on Alice’s site, WordPress will detect that a user with the same email address already exists and throw an error.
Note: We realize how bad that can be depending on your use-case, so WP Ultimo has an option that bypasses the regular checks for an existing user, allowing multiple accounts to be created using the same email address. Each account is bound to a subsite, so the risk of collision is kept to a minimal. In the example above, John would not get an error message and would be able to buy those shoes without an issue. This option is called Enable Multiple Accounts, and can be activate on WP Ultimo → Settings → Login & Registration.
Even though the user table is shared, users can be added to and removed from subsites by the subsite admins or the super admin, and they can even have different user roles on different subsites.
WordPress multisite is really powerful when it comes to the number of sites it can support. This can be tested by the fact that WordPress.com, Edublogs, and Campuspress are all multisite-based services and each host thousands of sites.
While in theory there is no maximum number of sites you can host on a single WordPress multisite installation, in practice the number of sites you can satisfactorily run can vary widely depending on a number of different factors: how dynamic the sites are, which plugins are available to subsites, etc.
As a rule of thumb, the simpler your network is, the better. Favoring sites where the content is not really dynamic (which makes them great candidates for aggressive caching strategies) and keeping the plugin stack as light as possible (the lower the number of active plugins the better) can drastically increase the number of subsites you can host.
The best part is that since it’s all WordPress here, the same tools you already know and love for performance improvements will also work for a multisite network.
The main bottleneck for multisite is the database but if everything else is set up correctly, it can take a couple of thousand sites before you need to worry about it. Even then, there are solutions that can be progressively added at that point (like database sharding solutions, for example).