<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wordpress network Archives - Developry Plugins</title>
	<atom:link href="https://developryplugins.com/tag/wordpress-network/feed/" rel="self" type="application/rss+xml" />
	<link>https://developryplugins.com/tag/wordpress-network/</link>
	<description></description>
	<lastBuildDate>Mon, 24 Nov 2025 11:18:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://developryplugins.com/wp-content/uploads/2025/11/cropped-favicon-32x32.png</url>
	<title>wordpress network Archives - Developry Plugins</title>
	<link>https://developryplugins.com/tag/wordpress-network/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress Multisite Backup Strategy: Network-Wide Protection</title>
		<link>https://developryplugins.com/wordpress-multisite-backup-strategy-network-wide-protection/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Sun, 15 Feb 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Backup & Disaster Recovery]]></category>
		<category><![CDATA[multisite backup]]></category>
		<category><![CDATA[multisite strategy]]></category>
		<category><![CDATA[network backup]]></category>
		<category><![CDATA[network protection]]></category>
		<category><![CDATA[wordpress network]]></category>
		<guid isPermaLink="false">https://developryplugins.com/?p=169</guid>

					<description><![CDATA[<p>WordPress Multisite networks require specialized backup strategies beyond single-site approaches. Network-wide protection must account for shared resources, multiple databases, per-site variations, and complex restoration scenarios. This comprehensive guide teaches multisite...</p>
<p>The post <a href="https://developryplugins.com/wordpress-multisite-backup-strategy-network-wide-protection/">WordPress Multisite Backup Strategy: Network-Wide Protection</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>WordPress Multisite networks require specialized backup strategies beyond single-site approaches. Network-wide protection must account for shared resources, multiple databases, per-site variations, and complex restoration scenarios. This comprehensive guide teaches multisite backup strategies ensuring complete network protection and flexible recovery.</p>
<h2 id="multisite-backup-challenges">Multisite Backup Challenges</h2>
<p><strong>Unique Multisite Considerations</strong>:</p>
<ul>
<li>Shared wp-content/uploads with site-specific folders</li>
<li>Network-wide plugins and themes</li>
<li>Shared database with per-site tables</li>
<li>Network configuration in wp-config.php</li>
<li>Domain mapping complexity</li>
<li>User table shared across network</li>
<li>Per-site restoration complexity</li>
</ul>
<p>Standard backup approaches often fail multisite networks.</p>
<h2 id="understanding-multisite-structure">Understanding Multisite Structure</h2>
<p><strong>Database Tables</strong>:</p>
<ul>
<li>Shared: wp_users, wp_usermeta, wp_sitemeta</li>
<li>Per-Site: wp_X_posts, wp_X_options, wp_X_postmeta (where X = site ID)</li>
</ul>
<p><strong>File Structure</strong>:</p>
<ul>
<li>/wp-content/uploads/sites/2/ (site ID 2 uploads)</li>
<li>/wp-content/blogs.dir/ (legacy structure)</li>
<li>Shared plugins and themes</li>
</ul>
<h2 id="network-wide-backup-strategy">Network-Wide Backup Strategy</h2>
<p>Backup entire network including all sites:</p>
<p><strong>Using UpdraftPlus Network</strong>:</p>
<ol type="1">
<li>Install UpdraftPlus on network</li>
<li>Network activate</li>
<li>Configure backup schedule</li>
<li>Enable “Backup all sites”</li>
<li>Select cloud storage</li>
</ol>
<p>Backs up all sites simultaneously.</p>
<h2 id="per-site-backup-approach">Per-Site Backup Approach</h2>
<p>Backup individual sites separately for granular control:</p>
<p><strong>Manual Per-Site Method</strong>:</p>
<ol type="1">
<li>Switch to specific site</li>
<li>Export that site’s database tables</li>
<li>Backup that site’s uploads folder</li>
<li>Document site configuration</li>
</ol>
<p>Allows independent site restoration.</p>
<h2 id="database-backup-strategies">Database Backup Strategies</h2>
<p><strong>Complete Network Database Export</strong>:</p>
<div class="sourceCode" id="cb1">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true"></a><span class="ex">wp</span> db export full-network.sql --network</span></code></pre>
</div>
<p>Includes all network and site tables.</p>
<p><strong>Individual Site Database Export</strong>:</p>
<div class="sourceCode" id="cb2">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true"></a><span class="ex">wp</span> db export site-2.sql --url=site2.example.com</span></code></pre>
</div>
<p>Exports only tables for specific site.</p>
<p><strong>Critical Network Tables Only</strong>:</p>
<div class="sourceCode" id="cb3">
<pre class="sourceCode sql"><code class="sourceCode sql"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true"></a>mysqldump <span class="op">-</span>u <span class="fu">user</span> <span class="op">-</span>p <span class="kw">database</span> wp_users wp_usermeta wp_sitemeta wp_site wp_blogs <span class="op">&gt;</span> <span class="kw">network</span><span class="op">-</span>core.sql</span></code></pre>
</div>
<h2 id="file-backup-approaches">File Backup Approaches</h2>
<p><strong>Complete wp-content Backup</strong>:</p>
<div class="sourceCode" id="cb4">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a><span class="fu">tar</span> -czf wp-content-backup.tar.gz /var/www/html/wp-content/</span></code></pre>
</div>
<p>Includes all sites’ uploads, themes, and plugins.</p>
<p><strong>Per-Site Uploads Backup</strong>:</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="fu">tar</span> -czf site-2-uploads.tar.gz /var/www/html/wp-content/uploads/sites/2/</span></code></pre>
</div>
<p>Isolates specific site’s media.</p>
<h2 id="network-configuration-backup">Network Configuration Backup</h2>
<p>Backup critical network configuration:</p>
<p><strong>wp-config.php</strong>:</p>
<ul>
<li>Database credentials</li>
<li>Multisite constants (MULTISITE, SUBDOMAIN_INSTALL, etc.)</li>
<li>Domain mapping configuration</li>
</ul>
<p><strong>.htaccess or nginx.conf</strong>:</p>
<ul>
<li>Rewrite rules for multisite</li>
<li>Domain mapping rules</li>
</ul>
<p><strong>Sunrise.php</strong> (if using domain mapping):</p>
<ul>
<li>Domain mapping configuration</li>
</ul>
<h2 id="subdomain-vs-subdirectory-networks">Subdomain vs Subdirectory Networks</h2>
<p><strong>Subdomain Network</strong> (site1.network.com):</p>
<ul>
<li>DNS configuration critical</li>
<li>Wildcard SSL certificate backup</li>
<li>DNS zone file backup</li>
</ul>
<p><strong>Subdirectory Network</strong> (network.com/site1):</p>
<ul>
<li>Simpler restoration</li>
<li>No DNS dependencies</li>
<li>URL structure preservation important</li>
</ul>
<h2 id="domain-mapping-considerations">Domain Mapping Considerations</h2>
<p>Sites with custom domains require additional backup:</p>
<p><strong>Domain Mapping Table</strong>:</p>
<div class="sourceCode" id="cb6">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="ex">wp</span> db export --tables=wp_domain_mapping domain-map.sql</span></code></pre>
</div>
<p><strong>DNS Records Documentation</strong>:</p>
<ul>
<li>Document all A records</li>
<li>CNAME configurations</li>
<li>SSL certificate details</li>
</ul>
<h2 id="plugin-compatibility">Plugin Compatibility</h2>
<p><strong>Multisite-Compatible Backup Plugins</strong>:</p>
<ul>
<li><strong>UpdraftPlus Premium</strong>: Full multisite support</li>
<li><strong>BackupBuddy</strong>: Network-wide and per-site backups</li>
<li><strong>BackWPup</strong>: Multisite aware</li>
<li><strong>Snapshot Pro</strong>: WPMU DEV’s multisite solution</li>
</ul>
<p>Verify multisite compatibility before use.</p>
<h2 id="restoration-strategies">Restoration Strategies</h2>
<p><strong>Complete Network Restoration</strong>:</p>
<ol type="1">
<li>Provision new hosting</li>
<li>Install fresh WordPress multisite</li>
<li>Import complete database</li>
<li>Restore all wp-content files</li>
<li>Update wp-config.php</li>
<li>Update network URLs if changed</li>
</ol>
<p><strong>Single Site Restoration</strong>:</p>
<ol type="1">
<li>Import site-specific database tables</li>
<li>Restore site’s uploads folder</li>
<li>Update site_url and home_url for that site</li>
<li>Verify site isolation</li>
</ol>
<h2 id="testing-multisite-backups">Testing Multisite Backups</h2>
<p><strong>Network-Wide Test</strong>:</p>
<ol type="1">
<li>Clone entire network to staging</li>
<li>Import database</li>
<li>Restore files</li>
<li>Test all sites</li>
<li>Verify inter-site functionality</li>
<li>Check network admin</li>
</ol>
<p><strong>Per-Site Test</strong>:</p>
<ol type="1">
<li>Restore individual site to standalone WordPress</li>
<li>Convert multisite tables to standard WordPress</li>
<li>Verify site functionality independently</li>
</ol>
<h2 id="storage-requirements">Storage Requirements</h2>
<p>Multisite networks require substantial storage:</p>
<p><strong>Example 10-Site Network</strong>:</p>
<ul>
<li>Database: 500MB-2GB</li>
<li>Uploads: 10GB-100GB+</li>
<li>Plugins/Themes: 1-5GB</li>
<li>Total: 15GB-110GB+</li>
</ul>
<p>Plan cloud storage accordingly.</p>
<h2 id="automated-multisite-backup-script">Automated Multisite Backup Script</h2>
<div class="sourceCode" id="cb7">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true"></a><span class="co">#!/bin/bash</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true"></a><span class="co"># Multisite Network Backup Script</span></span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true"></a></span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true"></a><span class="va">NETWORK_PATH=</span><span class="st">&quot;/var/www/html&quot;</span></span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true"></a><span class="va">BACKUP_DIR=</span><span class="st">&quot;/backups/multisite&quot;</span></span>
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true"></a><span class="va">DATE=$(</span><span class="fu">date</span> +%Y%m%d-%H%M<span class="va">)</span></span>
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true"></a></span>
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true"></a><span class="bu">cd</span> <span class="va">$NETWORK_PATH</span></span>
<span id="cb7-9"><a href="#cb7-9" aria-hidden="true"></a></span>
<span id="cb7-10"><a href="#cb7-10" aria-hidden="true"></a><span class="co"># Full network database</span></span>
<span id="cb7-11"><a href="#cb7-11" aria-hidden="true"></a><span class="ex">wp</span> db export <span class="va">$BACKUP_DIR</span>/network-db-<span class="va">$DATE</span>.sql --network</span>
<span id="cb7-12"><a href="#cb7-12" aria-hidden="true"></a></span>
<span id="cb7-13"><a href="#cb7-13" aria-hidden="true"></a><span class="co"># Each site individually</span></span>
<span id="cb7-14"><a href="#cb7-14" aria-hidden="true"></a><span class="kw">for</span> <span class="ex">site_id</span> in <span class="va">$(</span><span class="ex">wp</span> site list --field=blog_id --network<span class="va">)</span><span class="kw">;</span> <span class="kw">do</span></span>
<span id="cb7-15"><a href="#cb7-15" aria-hidden="true"></a>    <span class="ex">wp</span> db export <span class="va">$BACKUP_DIR</span>/site-<span class="va">$site_id</span>-<span class="va">$DATE</span>.sql --url=<span class="va">$(</span><span class="ex">wp</span> site list --field=url --blog_id=<span class="va">$site_id)</span></span>
<span id="cb7-16"><a href="#cb7-16" aria-hidden="true"></a><span class="kw">done</span></span>
<span id="cb7-17"><a href="#cb7-17" aria-hidden="true"></a></span>
<span id="cb7-18"><a href="#cb7-18" aria-hidden="true"></a><span class="co"># All uploads</span></span>
<span id="cb7-19"><a href="#cb7-19" aria-hidden="true"></a><span class="fu">tar</span> -czf <span class="va">$BACKUP_DIR</span>/wp-content-<span class="va">$DATE</span>.tar.gz wp-content/</span>
<span id="cb7-20"><a href="#cb7-20" aria-hidden="true"></a></span>
<span id="cb7-21"><a href="#cb7-21" aria-hidden="true"></a><span class="co"># Compress database</span></span>
<span id="cb7-22"><a href="#cb7-22" aria-hidden="true"></a><span class="fu">gzip</span> <span class="va">$BACKUP_DIR</span>/*.sql</span>
<span id="cb7-23"><a href="#cb7-23" aria-hidden="true"></a></span>
<span id="cb7-24"><a href="#cb7-24" aria-hidden="true"></a><span class="co"># Upload to S3</span></span>
<span id="cb7-25"><a href="#cb7-25" aria-hidden="true"></a><span class="ex">aws</span> s3 sync <span class="va">$BACKUP_DIR</span> s3://multisite-backups/</span>
<span id="cb7-26"><a href="#cb7-26" aria-hidden="true"></a></span>
<span id="cb7-27"><a href="#cb7-27" aria-hidden="true"></a><span class="co"># Cleanup old backups</span></span>
<span id="cb7-28"><a href="#cb7-28" aria-hidden="true"></a><span class="fu">find</span> <span class="va">$BACKUP_DIR</span> -mtime +30 -delete</span></code></pre>
</div>
<h2 id="network-admin-backup-settings">Network Admin Backup Settings</h2>
<p>Configure network-wide backup policies:</p>
<p><strong>Network Settings → Backup Configuration</strong>:</p>
<ul>
<li>Minimum backup frequency per site</li>
<li>Required backup retention</li>
<li>Approved backup plugins</li>
<li>Backup storage requirements</li>
</ul>
<p>Enforce consistency across network.</p>
<h2 id="performance-impact">Performance Impact</h2>
<p>Multisite backups strain resources:</p>
<p><strong>Optimization Strategies</strong>:</p>
<ul>
<li>Stagger site backups throughout day</li>
<li>Use off-peak hours for network-wide backups</li>
<li>Implement incremental backups where possible</li>
<li>Exclude cache directories</li>
<li>Use server resources wisely</li>
</ul>
<h2 id="disaster-recovery-for-multisite">Disaster Recovery for Multisite</h2>
<p><strong>Recovery Priority</strong>:</p>
<ol type="1">
<li>Critical sites (main site, revenue-generating)</li>
<li>Active sites (regular updates, traffic)</li>
<li>Archive sites (minimal activity)</li>
</ol>
<p>Prioritize restoration based on business impact.</p>
<h2 id="compliance-and-legal-requirements">Compliance and Legal Requirements</h2>
<p>Enterprise multisite networks require:</p>
<ul>
<li>Data residency compliance (GDPR)</li>
<li>Retention policy documentation</li>
<li>Audit trails for backups</li>
<li>Encryption for sensitive data</li>
<li>Regular backup verification</li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>WordPress Multisite backup requires network-wide strategies addressing shared resources, per-site variations, and complex restoration scenarios. Implement both full network and per-site backups, automate with WP-CLI scripts, test restoration procedures regularly, and use multisite-compatible backup plugins. Comprehensive backup strategy ensures any site or entire network can recover quickly from disasters.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://wordpress.org/support/article/create-a-network/">WordPress Multisite Documentation</a></li>
<li><a href="https://updraftplus.com/shop/updraftplus-premium/">UpdraftPlus Premium</a></li>
<li><a href="https://developer.wordpress.org/cli/commands/">WP-CLI Multisite Commands</a></li>
<li><a href="https://ithemes.com/backupbuddy/">BackupBuddy</a></li>
<li><a href="https://wordpress.org/support/article/multisite-network-administration/">Multisite Network Admin</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Multisite networks deserve enterprise protection. <a href="https://backupcopilotplugin.com/">Backup Copilot Pro</a> provides network-wide automated backups with per-site restoration capabilities. Comprehensive multisite protection—start your free 30-day trial today!</p>
<p>The post <a href="https://developryplugins.com/wordpress-multisite-backup-strategy-network-wide-protection/">WordPress Multisite Backup Strategy: Network-Wide Protection</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>WordPress Multisite Network Setup: Complete Configuration Guide</title>
		<link>https://developryplugins.com/wordpress-multisite-network-setup-complete-configuration-guide/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Tue, 10 Feb 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[WordPress Tips Tricks & Hacks]]></category>
		<category><![CDATA[multisite]]></category>
		<category><![CDATA[network setup]]></category>
		<category><![CDATA[subdirectory]]></category>
		<category><![CDATA[subdomain]]></category>
		<category><![CDATA[wordpress network]]></category>
		<guid isPermaLink="false">https://developryplugins.com/?p=193</guid>

					<description><![CDATA[<p>WordPress Multisite enables managing multiple WordPress sites from single installation sharing plugins, themes, and users centrally. From university networks and corporate intranets to SaaS platforms and franchise websites, Multisite reduces...</p>
<p>The post <a href="https://developryplugins.com/wordpress-multisite-network-setup-complete-configuration-guide/">WordPress Multisite Network Setup: Complete Configuration Guide</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>WordPress Multisite enables managing multiple WordPress sites from single installation sharing plugins, themes, and users centrally. From university networks and corporate intranets to SaaS platforms and franchise websites, Multisite reduces administrative overhead while maintaining site independence. This comprehensive guide teaches network activation, subdomain versus subdirectory configuration, site management, user roles, domain mapping, and performance optimization for enterprise-level WordPress deployments.</p>
<h2 id="understanding-wordpress-multisite">Understanding WordPress Multisite</h2>
<p><strong>What is Multisite</strong>: Single WordPress installation running multiple sites sharing:</p>
<ul>
<li>Core WordPress files</li>
<li>Plugins directory</li>
<li>Themes directory</li>
<li>Uploads folder (separate per site)</li>
<li>Database (separate tables per site)</li>
</ul>
<p><strong>Use Cases</strong>:</p>
<ul>
<li>University departments (math.university.edu, physics.university.edu)</li>
<li>Corporate divisions (sales.company.com, support.company.com)</li>
<li>Magazine networks (tech.magazine.com, lifestyle.magazine.com)</li>
<li>Franchise websites (location1.franchise.com, location2.franchise.com)</li>
<li>SaaS platforms (client1.platform.com, client2.platform.com)</li>
</ul>
<p><strong>Benefits</strong>:</p>
<ul>
<li>Centralized updates (plugins/themes updated once)</li>
<li>Shared user base (single login across sites)</li>
<li>Resource efficiency (one installation, multiple sites)</li>
<li>Cost savings (one hosting account)</li>
<li>Simplified management (Super Admin control)</li>
</ul>
<p><strong>Limitations</strong>:</p>
<ul>
<li>Shared hosting resources</li>
<li>Plugin compatibility issues</li>
<li>Complex troubleshooting</li>
<li>Cannot easily separate sites later</li>
</ul>
<h2 id="subdomain-vs-subdirectory">Subdomain vs Subdirectory</h2>
<p><strong>Subdomain Structure</strong>:</p>
<pre><code>site1.example.com
site2.example.com
site3.example.com</code></pre>
<p><strong>Advantages</strong>:</p>
<ul>
<li>Cleaner URL structure</li>
<li>Site-specific branding</li>
<li>Better for independent sites</li>
<li>Easier SSL certificate management (wildcard)</li>
</ul>
<p><strong>Requirements</strong>:</p>
<ul>
<li>Wildcard DNS (*.example.com)</li>
<li>Server configuration</li>
<li>Hosting support</li>
</ul>
<p><strong>Subdirectory Structure</strong>:</p>
<pre><code>example.com/site1
example.com/site2
example.com/site3</code></pre>
<p><strong>Advantages</strong>:</p>
<ul>
<li>Simpler DNS setup</li>
<li>Works on all hosting</li>
<li>SEO benefits (single domain authority)</li>
<li>No wildcard certificate needed</li>
</ul>
<p><strong>Limitations</strong>:</p>
<ul>
<li>Less independence between sites</li>
<li>URLs less flexible</li>
</ul>
<h2 id="pre-installation-requirements">Pre-Installation Requirements</h2>
<p><strong>Checklist</strong>:</p>
<ul>
<li>Fresh WordPress installation (or backup existing)</li>
<li>Pretty permalinks enabled</li>
<li>Hosting supports Multisite</li>
<li>File/database access</li>
<li>Super Admin privileges</li>
</ul>
<p><strong>Test Environment First</strong>: Always test Multisite on staging before production.</p>
<h2 id="enabling-wordpress-multisite">Enabling WordPress Multisite</h2>
<p><strong>Step 1: Enable Multisite Feature</strong>:</p>
<p>Add to <code>wp-config.php</code> (above <code>/* That's all, stop editing! */</code>):</p>
<div class="sourceCode" id="cb3">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true"></a><span class="co">/* Multisite */</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;WP_ALLOW_MULTISITE&#39;</span><span class="ot">,</span> <span class="kw">true</span><span class="ot">);</span></span></code></pre>
</div>
<p><strong>Step 2: Access Network Setup</strong>:</p>
<ol type="1">
<li>Save wp-config.php</li>
<li>Refresh WordPress admin</li>
<li>Tools → Network Setup</li>
</ol>
<p><strong>Step 3: Choose Network Type</strong>:</p>
<p>Select subdomain or subdirectory structure (cannot change later).</p>
<p><strong>Step 4: Network Details</strong>:</p>
<ul>
<li>Network Title</li>
<li>Network Admin Email</li>
</ul>
<p>Click Install.</p>
<h2 id="network-configuration">Network Configuration</h2>
<p><strong>Step 5: Update wp-config.php</strong>:</p>
<p>WordPress provides configuration code. Add to <code>wp-config.php</code>:</p>
<div class="sourceCode" id="cb4">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;MULTISITE&#39;</span><span class="ot">,</span> <span class="kw">true</span><span class="ot">);</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;SUBDOMAIN_INSTALL&#39;</span><span class="ot">,</span> <span class="kw">false</span><span class="ot">);</span> <span class="co">// true for subdomains, false for subdirectories</span></span>
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;DOMAIN_CURRENT_SITE&#39;</span><span class="ot">,</span> <span class="st">&#39;example.com&#39;</span><span class="ot">);</span></span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;PATH_CURRENT_SITE&#39;</span><span class="ot">,</span> <span class="st">&#39;/&#39;</span><span class="ot">);</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;SITE_ID_CURRENT_SITE&#39;</span><span class="ot">,</span> <span class="dv">1</span><span class="ot">);</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;BLOG_ID_CURRENT_SITE&#39;</span><span class="ot">,</span> <span class="dv">1</span><span class="ot">);</span></span></code></pre>
</div>
<p><strong>Step 6: Update .htaccess</strong>:</p>
<p>Replace existing WordPress rewrite rules with network rules:</p>
<p><strong>Subdirectory .htaccess</strong>:</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode apache"><code class="sourceCode apache"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="ex">RewriteEngine</span><span class="ch"> </span><span class="kw">On</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a>RewriteRule<span class="st"> .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a>RewriteBase<span class="st"> /</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a>RewriteRule<span class="st"> ^index\.php$ - [L]</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a><span class="co"># add a trailing slash to /wp-admin</span></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true"></a>RewriteRule<span class="st"> ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]</span></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true"></a></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true"></a>RewriteCond<span class="st"> %{REQUEST_FILENAME} -f [OR]</span></span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true"></a>RewriteCond<span class="st"> %{REQUEST_FILENAME} -d</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true"></a>RewriteRule<span class="st"> ^ - [L]</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true"></a>RewriteRule<span class="st"> ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true"></a>RewriteRule<span class="st"> ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]</span></span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true"></a>RewriteRule<span class="st"> . index.php [L]</span></span></code></pre>
</div>
<p><strong>Subdomain Configuration</strong>: Requires wildcard DNS pointing *.example.com to server IP.</p>
<h2 id="network-administration">Network Administration</h2>
<p><strong>Access Network Admin</strong>:</p>
<p>Top admin bar: My Sites → Network Admin</p>
<p><strong>Network Dashboard Sections</strong>:</p>
<ul>
<li>Sites: Manage all network sites</li>
<li>Users: Manage all network users</li>
<li>Themes: Enable/disable themes network-wide</li>
<li>Plugins: Activate plugins network-wide</li>
<li>Settings: Network settings</li>
</ul>
<h2 id="creating-new-sites">Creating New Sites</h2>
<p><strong>Add New Site</strong>:</p>
<ol type="1">
<li>Network Admin → Sites → Add New</li>
<li>Site Address: <code>newsite</code> (becomes newsite.example.com or example.com/newsite)</li>
<li>Site Title: Display name</li>
<li>Admin Email: Site administrator email</li>
<li>Click Add Site</li>
</ol>
<p><strong>Site Automatically Created</strong>:</p>
<ul>
<li>Database tables created</li>
<li>Default theme activated</li>
<li>Admin user notified via email</li>
<li>Site accessible immediately</li>
</ul>
<h2 id="user-management">User Management</h2>
<p><strong>User Roles in Multisite</strong>:</p>
<p><strong>Super Admin</strong>:</p>
<ul>
<li>Network-level control</li>
<li>Manage all sites</li>
<li>Add/remove sites</li>
<li>Network settings</li>
<li>Plugin/theme management</li>
</ul>
<p><strong>Administrator</strong> (per-site):</p>
<ul>
<li>Full site control</li>
<li>Cannot affect other sites</li>
<li>Cannot manage network</li>
</ul>
<p><strong>Other Roles</strong>: Editor, Author, Contributor, Subscriber (same as standard WordPress)</p>
<p><strong>Add User to Site</strong>:</p>
<ol type="1">
<li>Network Admin → Users → Add New</li>
<li>Or: Individual site → Users → Add Existing</li>
</ol>
<p><strong>Grant Super Admin</strong>:</p>
<p>Network Admin → Users → Edit User → check “Grant this user super admin privileges”</p>
<h2 id="plugin-management">Plugin Management</h2>
<p><strong>Network Activate vs Site Activate</strong>:</p>
<p><strong>Network Activation</strong>:</p>
<pre><code>Network Admin → Plugins → Network Activate</code></pre>
<p>Enables plugin on all sites automatically.</p>
<p><strong>Site-Specific Activation</strong>:</p>
<pre><code>Network Admin → Plugins → Enable (not Network Activate)</code></pre>
<p>Then individual sites can activate from their dashboard.</p>
<p><strong>Must-Use Plugins</strong>:</p>
<p>Create <code>wp-content/mu-plugins/</code> folder. Plugins here auto-activate network-wide (cannot deactivate).</p>
<p><strong>Example mu-plugin</strong>:</p>
<div class="sourceCode" id="cb8">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="kw">&lt;?php</span></span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a><span class="co">/*</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a><span class="co">Plugin Name: Network Customizations</span></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a><span class="co">Description: Custom code for entire network</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a><span class="co">*/</span></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a></span>
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true"></a><span class="co">// Remove WordPress branding from admin footer</span></span>
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true"></a><span class="kw">function</span> dprt_network_footer<span class="ot">()</span> {</span>
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true"></a>    <span class="kw">echo</span> <span class="st">&#39;Powered by Our Network&#39;</span><span class="ot">;</span></span>
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true"></a>}</span>
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true"></a>add_filter<span class="ot">(</span><span class="st">&#39;admin_footer_text&#39;</span><span class="ot">,</span> <span class="st">&#39;dprt_network_footer&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="theme-management">Theme Management</h2>
<p><strong>Enable Themes Network-Wide</strong>:</p>
<p>Network Admin → Themes → Enable (individual themes)</p>
<p>Sites can then activate from Appearance → Themes.</p>
<p><strong>Network-Wide Default Theme</strong>:</p>
<div class="sourceCode" id="cb9">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true"></a><span class="co">// In mu-plugin</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true"></a><span class="kw">function</span> dprt_force_theme<span class="ot">()</span> {</span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true"></a>    switch_theme<span class="ot">(</span><span class="st">&#39;twentytwentyfive&#39;</span><span class="ot">);</span></span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true"></a>}</span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true"></a>add_action<span class="ot">(</span><span class="st">&#39;after_switch_theme&#39;</span><span class="ot">,</span> <span class="st">&#39;dprt_force_theme&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="domain-mapping">Domain Mapping</h2>
<p><strong>Custom Domains for Sites</strong>:</p>
<p>Install domain mapping plugin (WordPress MU Domain Mapping or newer alternatives).</p>
<p><strong>Configuration</strong>:</p>
<ol type="1">
<li>Update DNS: Point custom domain to server IP</li>
<li>Add domain in Network Admin</li>
<li>Map domain to site</li>
<li>Configure SSL certificate for custom domain</li>
</ol>
<p><strong>Example</strong>: Map <code>customdomain.com</code> to <code>site1.example.com</code></p>
<h2 id="network-settings">Network Settings</h2>
<p><strong>Registration Settings</strong>:</p>
<p>Network Admin → Settings → Network Settings</p>
<p><strong>User Registration</strong>:</p>
<ul>
<li>Disabled (default)</li>
<li>User accounts may be registered</li>
<li>Logged in users may register new sites</li>
<li>Both user accounts and sites can be registered</li>
</ul>
<p><strong>New Site Settings</strong>:</p>
<ul>
<li>Welcome Email</li>
<li>Welcome User Email</li>
<li>First Post</li>
<li>First Page</li>
<li>First Comment</li>
</ul>
<p><strong>Upload Settings</strong>:</p>
<ul>
<li>Upload space per site (MB)</li>
<li>Upload file types allowed</li>
<li>Max upload file size</li>
</ul>
<h2 id="advanced-configuration">Advanced Configuration</h2>
<p><strong>Multisite Constants</strong>:</p>
<div class="sourceCode" id="cb10">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true"></a><span class="co">// Redirect to main site when non-existent site accessed</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;NOBLOGREDIRECT&#39;</span><span class="ot">,</span> <span class="st">&#39;https://example.com&#39;</span><span class="ot">);</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true"></a></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true"></a><span class="co">// Change upload folder location</span></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;UPLOADBLOGSDIR&#39;</span><span class="ot">,</span> <span class="st">&#39;wp-content/uploads/sites&#39;</span><span class="ot">);</span></span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true"></a></span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true"></a><span class="co">// Force specific uploads directory</span></span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;UPLOADS&#39;</span><span class="ot">,</span> <span class="st">&#39;wp-content/uploads&#39;</span><span class="ot">);</span></span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true"></a></span>
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true"></a><span class="co">// Cookie domain for entire network</span></span>
<span id="cb10-11"><a href="#cb10-11" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;COOKIE_DOMAIN&#39;</span><span class="ot">,</span> <span class="st">&#39;.example.com&#39;</span><span class="ot">);</span></span>
<span id="cb10-12"><a href="#cb10-12" aria-hidden="true"></a></span>
<span id="cb10-13"><a href="#cb10-13" aria-hidden="true"></a><span class="co">// Cookie paths</span></span>
<span id="cb10-14"><a href="#cb10-14" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;ADMIN_COOKIE_PATH&#39;</span><span class="ot">,</span> <span class="st">&#39;/&#39;</span><span class="ot">);</span></span>
<span id="cb10-15"><a href="#cb10-15" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;PLUGINS_COOKIE_PATH&#39;</span><span class="ot">,</span> <span class="st">&#39;/&#39;</span><span class="ot">);</span></span>
<span id="cb10-16"><a href="#cb10-16" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;COOKIEPATH&#39;</span><span class="ot">,</span> <span class="st">&#39;/&#39;</span><span class="ot">);</span></span>
<span id="cb10-17"><a href="#cb10-17" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;SITECOOKIEPATH&#39;</span><span class="ot">,</span> <span class="st">&#39;/&#39;</span><span class="ot">);</span></span></code></pre>
</div>
<h2 id="database-structure">Database Structure</h2>
<p><strong>Network Tables</strong>:</p>
<ul>
<li><code>wp_blogs</code>: Stores site information</li>
<li><code>wp_sitemeta</code>: Stores network-wide options</li>
<li><code>wp_site</code>: Stores network details</li>
<li><code>wp_registration_log</code>: Tracks new site/user registrations</li>
<li><code>wp_signups</code>: Pending user/site signups</li>
</ul>
<p><strong>Site-Specific Tables</strong> (e.g., site ID 2):</p>
<ul>
<li><code>wp_2_posts</code></li>
<li><code>wp_2_postmeta</code></li>
<li><code>wp_2_users</code> (shared across network)</li>
<li><code>wp_2_options</code></li>
<li><code>wp_2_comments</code></li>
<li>etc.</li>
</ul>
<h2 id="performance-optimization">Performance Optimization</h2>
<p><strong>Object Caching</strong>:</p>
<div class="sourceCode" id="cb11">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true"></a><span class="co">// Use Redis or Memcached for network</span></span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true"></a><span class="fu">define</span><span class="ot">(</span><span class="st">&#39;WP_CACHE&#39;</span><span class="ot">,</span> <span class="kw">true</span><span class="ot">);</span></span></code></pre>
</div>
<p>Install object cache plugin (Redis Object Cache, Memcached).</p>
<p><strong>CDN Integration</strong>:</p>
<p>Offload media from all sites to single CDN.</p>
<p><strong>Database Optimization</strong>:</p>
<p>Regular cleanup:</p>
<div class="sourceCode" id="cb12">
<pre class="sourceCode sql"><code class="sourceCode sql"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true"></a><span class="co">-- Remove spam comments across all sites</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true"></a><span class="kw">DELETE</span> <span class="kw">FROM</span> wp_<span class="op">*</span>_comments <span class="kw">WHERE</span> comment_approved <span class="op">=</span> <span class="st">&#39;spam&#39;</span>;</span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true"></a></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true"></a><span class="co">-- Optimize all tables</span></span>
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true"></a>OPTIMIZE <span class="kw">TABLE</span> wp_<span class="op">*</span>_posts, wp_<span class="op">*</span>_postmeta, wp_<span class="op">*</span>_options;</span></code></pre>
</div>
<h2 id="security-considerations">Security Considerations</h2>
<p><strong>Restrict Site Creation</strong>:</p>
<p>Network Admin → Settings → uncheck registration options</p>
<p><strong>Limit File Uploads</strong>:</p>
<div class="sourceCode" id="cb13">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true"></a><span class="co">// In mu-plugin</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true"></a><span class="kw">function</span> dprt_restrict_upload_types<span class="ot">(</span><span class="kw">$mimes</span><span class="ot">)</span> {</span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true"></a>    <span class="kw">unset</span><span class="ot">(</span><span class="kw">$mimes</span><span class="ot">[</span><span class="st">&#39;exe&#39;</span><span class="ot">]);</span></span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true"></a>    <span class="kw">unset</span><span class="ot">(</span><span class="kw">$mimes</span><span class="ot">[</span><span class="st">&#39;php&#39;</span><span class="ot">]);</span></span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true"></a>    <span class="kw">return</span> <span class="kw">$mimes</span><span class="ot">;</span></span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true"></a>}</span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true"></a>add_filter<span class="ot">(</span><span class="st">&#39;upload_mimes&#39;</span><span class="ot">,</span> <span class="st">&#39;dprt_restrict_upload_types&#39;</span><span class="ot">,</span> <span class="dv">99</span><span class="ot">);</span></span></code></pre>
</div>
<p><strong>Prevent Plugin Installation by Site Admins</strong>:</p>
<p>Default Multisite behavior (only Super Admins install plugins).</p>
<h2 id="troubleshooting">Troubleshooting</h2>
<p><strong>404 Errors on New Sites</strong>:</p>
<p>Flush rewrite rules: Network Admin → Settings → Save (no changes needed)</p>
<p><strong>Login Redirect Loops</strong>:</p>
<p>Check COOKIE_DOMAIN and cookie path constants.</p>
<p><strong>Email Delivery Issues</strong>:</p>
<p>Configure SMTP for network (WP Mail SMTP plugin).</p>
<p><strong>Site Not Found</strong>:</p>
<p>Verify DNS configuration (wildcard for subdomains).</p>
<h2 id="conclusion">Conclusion</h2>
<p>WordPress Multisite enables efficient multi-site management through centralized administration, shared resources, and unified user management. Configure subdomain or subdirectory structures based on needs, implement network-wide plugins and themes, manage users across sites with Super Admin privileges, and optimize performance through object caching and CDN integration. Multisite transforms WordPress into enterprise-level platform managing hundreds of sites from single installation.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://wordpress.org/documentation/article/create-a-network/">WordPress Multisite Documentation</a></li>
<li><a href="https://developer.wordpress.org/advanced-administration/multisite/admin/">Multisite Network Admin</a></li>
<li><a href="https://developer.wordpress.org/apis/wp-config-php/#multisite-constants">Multisite Constants Reference</a></li>
<li><a href="https://wordpress.org/plugins/wordpress-mu-domain-mapping/">Domain Mapping Plugin</a></li>
<li><a href="https://www.wpbeginner.com/glossary/multisite/">Multisite Hosting Guide</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Multisite networks need reliable protection. <a href="https://backupcopilotplugin.com/">Backup Copilot Pro</a> safeguards your entire WordPress network with automated backups. Protect all your sites—start your free 30-day trial today!</p>
<p>The post <a href="https://developryplugins.com/wordpress-multisite-network-setup-complete-configuration-guide/">WordPress Multisite Network Setup: Complete Configuration Guide</a> appeared first on <a href="https://developryplugins.com">Developry Plugins</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
