I work a decent amount with Multisite. Not a ton, but maybe on about 10% of the websites I build. There’s sometimes confusion at work as to what’s a good use for Multisite and what is not. I also see this in the greater WordPress community. Let’s discuss what some common issues are, and how we can determine whether Multisite is the right fit.
What Multisite is best for
There is a subtle but important concept to understand when getting started with WordPress Multisite.
Multisite is intended to allow for different websites to utilize one WordPress install. Those websites can share themes, plugins, and users, but inherently, each one is meant to be different. Users in the network can be assigned to specific blogs and have various permissions on each. And plugins can be either network activated if they are intended to be used across all sites, or enabled and configured on a per-site basis.
WordPress.com is the most famous example of Multisite in action.
What people often squeeze Multisite into
However, many of us want to share much more than that. On any given project, we may want to share widgets, nav menus, forms, permissions, or even items in the posts table like posts, media, or pages.
Often times, I, and perhaps you, basically want “minisites” within a WordPress install that may vary in their level of separation from one another, but all in all, they are not wholly different websites as Multisite naturally wants to be.
For example, a blog network may want to maintain the global header, footer, and widgets, but enable community authors to start their own blogs. A corporate website may want to utilize an intranet that shares some of the primary style and functionality elements of the main website. A large law firm may want to enable each attorney to have their own section within the website.
The list can go on with examples of good use cases for minisites.
The problem is, with the current setup of Multisite, WordPress isn’t necessarily well-prepared to handle minisites out of the box.
Pitfalls for Multisite in minisite situations
There are a number of potential pitfalls people could run into when trying to sqeeze Multisite as a solution for minisites.
Child themes
Many consultants work with base parent themes, using a typical Parent -> Child theme relationship. However, when Multisite is needed on a project, child themes that handle a large percentage of the presentation layer can sometimes present issues.
For instance, I may want a custom page template to be available for one site in my install, but not another. If I create the template within a child theme that is shared between the two sites, I cannot prevent one site from having that template.
Another problem area with child themes and Multisite is stylesheets. Under a scenario where the main site presentation is in a child theme, but I have another site in the install with a very similar look, I then either have to duplicate most of the styles between child themes or go about an atypical way of sharing the base stylesheet from a plugin or something.
Therefore, at my work, when we utilize Multisite for this “Minisite” style functionality – where many items are shared across sites, we find it more valuable to make the parent theme house the shared elements across all sites. In this setup, the parent theme is essentially a shared style guide for each sub-site. Then, I can make more custom presentation layers per-site for the child themes.
Single point of updates for menus
The most common issue with minisites we run into at Infomedia is our desire to share menus and widget areas between all sites on the network. Most of the time we try to squeeze Multisite where it sometimes shouldn’t go, we’re essentially attempting to departmentalize a website from a user permissions perspective, while still maintaining almost all network-wide functionality.
Well, for menus and widgets this quickly becomes a problem. Multisite wants to treat these as independent for each site. So when a user comes back later on and wants to change a menu, they may not realize that they need to change the menu in each site in the network. The way to get around that is with menu caching.
Ron Rennick wrote a simple and effective menu caching plugin quite a long time ago, called Network Wide Menu, that we have forked and made our own a variety of ways for different projects. The plugin essentially lets you define a menu location as a global menu, and it caches the menu on the main site. And on each call to menus of subsites, it calls the cached menu from the main site in the network instead. So now users can update their menus from one location.
Global plugin settings
Plugins can be another pitfall for Multisite. When you use multisite, each site in the network gains ability to enable and disable any plugins that aren’t network enabled. If this power isn’t acceptable for the admins of a given site, then Multisite could be more trouble than it’s worth.
edit: Nacin tells me enabling plugins at a per-site level is actually a network setting!
Also, if you want to change all configuration settings globally across a network for a plugin, it has to be done programmatically, since there isn’t a way to bulk-edit plugin settings across all sites in a network.
Do you need Multisite?
Whenever you start having a discussion within your company or with your client about whether you need Multisite, I highly recommend you check out this post from Mika Epstein.
As she notes in the post, there are some times where Multisite just might not be the right option for you.
You may find after really thinking about it and reading that post that you have some alternatives to Multisite to accomplish what you want
Alternatives to Multisite for minisite functionality
If you are wanting to make sections of your websites permissible to certain people, you could consider using custom post types and taxonomies to do so, with custom capabilities set. You may also consider a plugin like Groups for this, plus you can use it to manage users and their permissions on a per-post basis.
For giving authors their own “blogs” you may want to consider just customizing the author archive template and using the built in archives for each author. You may want to create a custom role with a plugin like Members if you need to specially manage their permissions under this setup.
Where I’d really like better minisite support
There are times where I’d really like some level of minisite support within WordPress. One is when I want to limit access within a content type to certain types of users, without regard to taxonomy. For instance, I may want a group of 5 users to be able to edit the “about” page and its sub-page content. Such a hiearchical method for segregating users isn’t very easy in WordPress as far as I know.
Also, what if I have modular functionality under that particular section? I may have FAQs, or a testimonials custom post type within a section of a hierarchy. This all becomes a challenge, because the content type isn’t the same, but it’s in the same hiearchy as those areas I want a particular user to edit.
User taxonomies may be able to help under these scenarios – I’m not sure. User taxonomies make my brain hurt sometimes.
Is there a future for “minisite” support in WordPress?
The point remains that utilizing a packaged “minisite” functionality the way you can utilize packaged Multisite functionality doesn’t exist in WordPress. And as far as I know, there aren’t any big core initiatives to create built-in minisite functionality. Therefore, I think it could be ripe territory for a bbPress-level plugin.
I know that some folks have been working on this topic for some time. Mike Schinkel has talked about Sunrise for just this sort of thing for years, but I’m not sure what the status of it is these days.
I’d love to see your solutions for handling minisite setups, and of course I want to know where I sound like an idiot in this post too. After all, Multisite is only a part of what I do, and I struggle often times when the subject comes up to weigh pros and cons for how to setup sites that aren’t totally perfect for Multisite, but could use some of the Multisite goodness.
“For instance, I may want a group of 5 users to be able to edit the โaboutโ page and its sub-page content. Such a hiearchical method for segregating users isnโt very easy in WordPress as far as I know.”
My favorite way to handle this has been with BU’s section editing plugin: http://wordpress.org/plugins/bu-section-editing/ It has a slick interface and works well. You can create section editor groups where you can assign users to multiple groups. Each group defines which section of the site they can work in. It works with Hierarchical Custom Post Types as well.
Nice recommendation, Peter. I definitely need to check that out! Thanks for chiming in ๐
I would be interested to see how others handle this dilemma as well. I have used multisite as a way to restrict users access to certain “sections” of the site, but it always feels a bit heavy handed.
The Groups plugin is new to me, I will have to give that a try the next time I am tempted to jump into multisite. In the past I have used User Access Manager (UAM). I really like the way it works conceptually, but I had trouble bending it to my will so I started using multisite instead.
WordPress Multisite is the best way to create multilingual sites, each blog in the network is a language. All capabilities topics are possible and it works on the default of WP, no changes on the database or core requirements. But currently I miss different functions for development with MU, but she comes from version to version more in the core.
Small plugin as helper plugins fรผr MU:
https://github.com/bueltge/WordPress-Multisite-Enhancements
https://github.com/inpsyde/multilingual-press
Very interesting post, especially since I am currently working on a project where the client came to me and said he wanted a Multisite for different mini blogs. After some discussion we settled on what you describe as a “Minisite”.
Wouldn’t you just make 2 seperate child themes? You shouldn’t share the same child theme between 2 different clients.
Very timely info for me thanks. We’re in process of migrating from an in-house CMS to using WP on our main portal for just this functionality, where we need to have one main brand/navigation but have separate min–sites to allow a client enter their own info unique to that /site/clientname/ folder – without them being able to change stuff, only post stuff which we then approve but has their info locally for something like a user bio, or whatever on page (e.g., photo gallery unique to mini-site); and be able to have all the mini-sites feed to a main mini-homepage … tricky. Some of the thoughts you have here really help me, as I’m trying to sort out this very issue right now! ๐ thanks again
I suppose it all boils down to what solutions is right for each project and weighing up the pros and cons for each.
Best article on this topic, thank you! I was searching for a Network Navigation plugin and finally found this post. I plan to use the Networkwide Menu via wpmututorials.com you noted. A real lifesaver since we too are migrating from Drupal to WP and needed a minisite set up as well as a multisite set up.
Hello. Thank you in advance for sharing this informative article with us. I’ve finished a project that was about WordPress Multisite. After reading your article, um able to perform properly now ๐ really. Thanks again dear.
We wrote a guide to building WordPress intranets, and we also talked a lot about the pros and cons of multisite vs single installations.
Your article offers a much wider view of the decisions to make, but if any of your readers are researching multisite because they are specifically building an intranet, they might find it useful:
http://wp-glogin.com/2014/02/wordpress-intranets-part-1-introduction/
Thanks,
Dan