Skip to main content

Network Setup

Overview

WP-CLI can install a fresh multisite network or convert an existing single-site install into multisite. This is the fastest, most repeatable way to bootstrap network environments for agencies, SaaS products, and enterprise WordPress teams.

Understanding Multisite Setup Paths

You typically choose one of two setup flows:

  • Fresh network install with wp core multisite-install
  • Convert existing site with wp core multisite-convert

Before running either flow, decide your URL architecture:

  • Subdirectory network: example.com/site-a/
  • Subdomain network: site-a.example.com
Decide URL Strategy Early

Switching from subdirectory to subdomain (or vice versa) later is possible but operationally expensive.

Fresh Network Installation

Install Multisite (Subdirectory)

# Install a new multisite network using subdirectories
wp core multisite-install \
--url=example.com \
--title="Example Network" \
--admin_user=admin \
--admin_password='strong-pass-here' \
--admin_email=admin@example.com

Example output:

Success: Network installed. Don't forget to set up rewrite rules.

Install Multisite (Subdomain)

# Install network where each site gets its own subdomain
wp core multisite-install \
--url=example.com \
--title="Example Network" \
--admin_user=admin \
--admin_password='strong-pass-here' \
--admin_email=admin@example.com \
--subdomains

Requirement: Wildcard DNS and web server config for *.example.com.

Converting Existing Single-Site to Multisite

Convert In-Place

# Convert current single-site installation
wp core multisite-convert --title="Converted Network"

After conversion, update the generated multisite rules in:

  • wp-config.php
  • .htaccess (or your Nginx server block)

Convert with Subdomains

# Convert and use subdomain mode
wp core multisite-convert --title="Converted Network" --subdomains

Use this when each tenant or department needs an isolated hostname.

Pre-Flight Checks

Confirm Site URL and Environment

wp option get siteurl
wp core version
wp config path

Backup Before Conversion

# Backup database
wp db export multisite-preconvert-$(date +%Y%m%d-%H%M).sql

# Backup config files
cp wp-config.php wp-config.php.bak
cp .htaccess .htaccess.bak

Post-Install Validation

Validate Network Bootstrapping

# List network sites
wp site list

# Confirm multisite constants are loaded
wp eval 'echo is_multisite() ? "true" : "false";'

Create and Test First Subsite

# Create a test site
wp site create --slug=staging --title="Staging Site" --email=ops@example.com

# Verify it exists
wp site list --fields=blog_id,url --format=table

Real-World Scenarios

Scenario 1: Agency Client Network

wp core multisite-install \
--url=agency.example.com \
--title="Agency Sites" \
--admin_user=networkadmin \
--admin_password='replace-me' \
--admin_email=infra@example.com \
--subdomains

Scenario 2: University Department Sites

wp core multisite-install \
--url=university.example.edu \
--title="University Network" \
--admin_user=networkadmin \
--admin_password='replace-me' \
--admin_email=webteam@example.edu

Scenario 3: Convert Existing Brand Site into Network

wp db export before-network.sql
wp core multisite-convert --title="Brand Network"

Best Practices

1. Treat Setup as Infrastructure-as-Code

Keep your exact install/convert commands in deployment docs or scripts.

2. Use Strong Credentials and Secret Management

export WP_ADMIN_PASS='use-a-secret-store'
wp core multisite-install --url=example.com --title="Network" --admin_user=admin --admin_password="$WP_ADMIN_PASS" --admin_email=admin@example.com

3. Validate DNS Before --subdomains

dig site1.example.com

4. Stage Conversion Before Production

Run conversion in staging and test login, media uploads, and permalinks for multiple subsites.

5. Keep a Fast Rollback Plan

Have DB and config backups ready so you can restore quickly if rewrite or domain rules break.

Troubleshooting

Network Works but Subsites 404

# Re-save rewrite rules from CLI context
wp rewrite flush --hard

Also verify web server rewrite config is updated for multisite.

Subdomain Sites Not Resolving

Check wildcard DNS (*.example.com) and reverse proxy/web server host routing.

Admin Login Redirect Loops

# Verify core network URL options
wp option get siteurl
wp option get home

Mismatched URLs or proxy SSL settings are common causes.

Quick Reference

Essential Commands

# Fresh install
wp core multisite-install --url=<domain> --title="<title>" --admin_user=<user> --admin_password='<pass>' --admin_email=<email>
wp core multisite-install --url=<domain> --title="<title>" --admin_user=<user> --admin_password='<pass>' --admin_email=<email> --subdomains

# Convert existing site
wp core multisite-convert --title="<network title>"
wp core multisite-convert --title="<network title>" --subdomains

# Verify
wp site list
wp eval 'echo is_multisite() ? "true" : "false";'

Comparison: Setup Approaches

ApproachCommandBest Use Case
Fresh Installwp core multisite-installNew platforms and clean environments
In-Place Convertwp core multisite-convertExisting site expanding into network
Subdirectory Modeno --subdomainsShared brand/domain structure
Subdomain Mode--subdomainsTenant-style site isolation
Key Takeaway

Use multisite-install for new builds, multisite-convert for existing sites, and lock your URL mode before production launch.

Next Steps