WordPress Framework: WordPress Network

Gregg Digital Strategy Leave a Comment

A WordPress Network is a single installation of WordPress that has sub-sites. These sub-sites can be setup as sub-domains (camps.lcmm.org or donations.lcmm.org) or as sub-directories (www.lcmm.org/camps/ or www.lcmm.org/donations). A WordPress network can be a powerful tool when setup properly. In fact, the entire WordPress.com website and all of the free website it hosts are all part of a single install of WordPress. But before you go about building your own WordPress Network, be sure to read “Before You Create A Network“.

Setting up a network is easy but the strategy in using it and maintaining it can be complex. Here are the reasons I wanted a WordPress Network for the Lake Champlain Maritime Museum:

Isolation of a Sub-site. While it’s not truly isolated as a separate install would be, the administration of the site functions nearly identical to a stand alone WordPress install. This allows me to setup one sub-site as a membership portal and/or learning management system without giving access to our main website. If something is configured wrong, it won’t affect the whole network (unless the error was made at the Network Admin level).

Themes & Plugins. The Network Admin controls which plugins and themes will be made available to the sub-site Admins. Admins of the sub-sites may manage the selection and configuration of their own themes and plugins.

Centralized Updates. Since all themes and plugins are installed at the Network Admin level so all of the updates are made from there as well. This saves time and reduces the likelihood of missing an update.

Granular Roles. Control of roles (which control permissions) is more granular than with a single install. Users are created at the Network Admin level and then added to sub-sites. A single user can have different permissions on one sub-site than another.

Flexibility of Design. Since each sub-site Admin has control over their choice of themes and plugins (from what’s been made available), they can make the sub-site look and function entirely differently than another sub-site.

Analytics. Each sub-site uses Google Tag Manager and has its own property in Google Analytics. This allows me to easily break out the metrics for each sub-site for my reporting and KPI tracking.

Choose the right website host

This is a good time to mention the importance of choosing the right website host. I don’t like to take risks with my critical websites. So I opted to host our new WordPress Network on a website host I know and trust. One that has given me excellent support over the years: WP Engine. WP Engine provides a managed hosting environment optimized for WordPress and WordPress only. I don’t have to worry about server configuration or updates to the core installation of WordPress because they take care of it. And since WordPress is all they support, they are experts and super helpful with troubleshooting the rare oddities that popup. I can’t tell you how much of a relief it is to know they’ll take care of the server and WordPress core files – including security and backups.

But while managed hosting, security, data backups, auto updates to the core files are all nice, they aren’t enough. The server the host provides must perform. In most standard shared hosting environments the web server can be home to hundreds of websites because the host service wants to maximize their profit. A conscientious host will keep the number of web sites that share a server to a much smaller number so they can ensure each website has plenty of resources to make their website snappy and safe. Again, WP Engine hit the mark.

Partial Launch – a bandaid fix

After my first few months with the museum, I found myself in a bit of a pinch. I had started the new website but I was no where near finished. I had to keep the old website up and running despite its shortcomings. But I also wanted to take advantage of the new WordPress Network. Specifically, I had a need to build 2 new sub-sites as quickly as possible:

  • donations.lcmm.org – because end-of-year giving season was upon us and the donations page on the old site was not user friendly.
  • camps.lcmm.org – because we needed a place to begin advertising for summer camps before the main site was completed.

To keep the old website at www.lcmm.org AND be able to build two new sub-sites as sub-domains I had to create a bandaid using some technical smoke and mirrors. Here’s what I did.

In order to make this work I had to address 5 key steps:

  • Add two entries for the sub-domains to DNS and point them to WP Engine.
  • Register the sub-domains with WP Engine
  • Point the sub-domains to the WordPress Network
  • Create the sub-sites using sub-domains
  • Make the default URL for each sub-site look like the sub-domain URL

I went ahead and created the sub-sites in the new WordPress Network. The default URLs were camps.lcmm.wpengine.com and donations.lcmm.wpengine.com. The top level default was lcmm.wpengine.com which is where I login and start from no matter what site I’m working on.

I then added the sub-domains to DNS and pointed them to WP Engine’s servers. The WP Engine admin panel allowed me to add the sub-domain so traffic coming in would be recognized and sent to the Network.

Then I installed the WordPress MU Domain Mapping plugin. This allowed me to map the new sub-domains and point them to the proper sub-site by their ID. I had to do it this way because the DNS entry for the main domain (lcmm.org) still pointed to Hostgator where the existing site was still live.

This brought the network to life albeit there were gotchas.

  1. Because the primary domain (lcmm.org) pointed elsewhere, I could not install an SSL certificate on the new sub-sites. This meant I couldn’t accept money using any form that was native to the WordPress install. I could, however, use a combination of Stripe and WP Simple Pay to build a donations form. This worked fine and was secure because the form was really hosted by Stripe and just embedded within donations.lcmm.org.
  2. Because I couldn’t accept money on any form native to WordPress, I could create a registration form for our summer camps but I couldn’t take money with it. Each camp has a different price and there are options to be chosen so the final price varies which meant the payment section needed to be integrated with the selections made on the registration form. WP Simple Pay couldn’t achieve this.
  3. I use Theme.co’s Pro theme which has its own editing interface. The editor shows you a preview but the editor got confused because the URL for the administrative side was the URL given by WP Engine (camps.lcmm.wpengine.com) before the domain is pointed to them but the public side the site was visible at camps.lcmm.org. So in order to edit the site using Pro, I had to disable the domain mapping.
  4. I created another sub-site called Maintenance and used the domain mapping to point camps.lcmm.org to it while I worked on the camps sub-site. This way I could deliver a maintenance page rather than a server error while the camps sub-site was offline.

The bandaid worked great but it was labor intensive, a total smoke & mirrors setup, and had issues (the payment forms) that I wanted to overcome as quickly as possible.

Once the new website went live, I was able to get rid of all the workarounds: the domain mapping, the extra domains in WP Engine’s Admin panel, the maintenance sub-site (I added a maintenance page plugin called SeedProd Coming Soon Page Pro to give me a way to take a site offline and deliver a nice maintenance page instead of the standard server 404), and I was able to finally finish the payment functionality so the camp registration forms could actually take money.

Conclusion?

Installing the WordPress Network was easy but it was difficult and detailed to build the functionality I needed while the main site was still under construction. It caused me headaches but let me address the two pressing needs (donations and camp registrations) and gave me breathing room to keep working on the main website.

Leave a Reply

Your email address will not be published. Required fields are marked *