WordPress Multisite เป็นฟีเจอร์ในตัวของ WordPress ที่ช่วยให้คุณบริหาร เว็บไซต์หลายเว็บภายใต้ Installation เดียว โดยไม่ต้องติดตั้ง WordPress แยกกันทีละครั้ง หนึ่งในรูปแบบที่นิยมมากที่สุดคือ Subdomain Mode ซึ่งแต่ละ Sub-site จะเปิดที่ sitename.yourdomain.com แทนที่จะแชร์ path ร่วมกัน บทความนี้จะพาคุณตั้งค่าตั้งแต่ต้นจนจบ ตั้งแต่การเตรียม Server ไปจนถึงการเพิ่ม Sub-site แรกและแก้ปัญหาที่พบบ่อย

WordPress Multisite คืออะไร และแบบ Subdomain ดีอย่างไร

WordPress Multisite (เดิมชื่อ WordPress MU หรือ Multi-User) คือโหมดพิเศษที่เปิดใช้งานได้ใน WordPress ทุกเวอร์ชัน มันสร้าง Network of Sites ที่ใช้โค้ด, ปลั๊กอิน และธีมชุดเดียวกัน แต่แต่ละ Site มี Database Tables แยก, Admin Panel แยก และเนื้อหาแยกจากกันโดยสมบูรณ์

รูปแบบ Subdomain หมายความว่า Sub-site จะมี URL ในรูปแบบ blog.yourdomain.com, shop.yourdomain.com, team.yourdomain.com แทนที่จะเป็น yourdomain.com/blog แบบ Subdirectory ข้อดีของ Subdomain Mode มีดังนี้:

สิ่งที่ต้องเตรียมก่อนเริ่มตั้งค่า

ก่อนเปิดใช้งาน Multisite โหมด Subdomain มีสิ่งที่ต้องเตรียมให้ครบ ถ้าขาดข้อใดข้อหนึ่งจะทำให้ Sub-site ไม่สามารถเปิดได้:

สิ่งที่ต้องเตรียม รายละเอียด จำเป็น?
Wildcard DNS Record *.yourdomain.com A Record ชี้ไป Server IP บังคับ
Wildcard SSL Certificate ครอบคลุม *.yourdomain.com แนะนำอย่างยิ่ง
PHP 8.0+ และ MySQL 5.7+ WordPress รุ่นใหม่ต้องการ PHP ≥ 7.4 บังคับ
mod_rewrite / .htaccess Apache ต้องเปิด mod_rewrite (Nginx ใช้ server block) บังคับ
Backup ล่าสุด Backup ไฟล์และ Database ก่อนเปิด Multisite แนะนำอย่างยิ่ง

ขั้นตอนที่ 1 — เปิดใช้งาน Multisite ใน wp-config.php

เข้าถึงไฟล์ wp-config.php ที่ root ของ WordPress ผ่าน FTP, File Manager ใน DirectAdmin หรือ SSH แล้วเพิ่มบรรทัดนี้ เหนือบรรทัด /* That's all, stop editing! */

/* Enable WordPress Multisite */
define( 'WP_ALLOW_MULTISITE', true );

บันทึกไฟล์แล้ว Refresh หน้า WordPress Admin หลังจากนั้นไปที่เมนู Tools › Network Setup จะปรากฏขึ้นมาให้คลิก

ขั้นตอนที่ 2 — ตั้งค่า Network บนหน้า Network Setup

หน้า Network Setup จะให้เลือกรูปแบบ URL ของ Sub-sites:

ใส่ชื่อ Network (เช่น "My WordPress Network") และอีเมล Admin แล้วคลิก Install จากนั้น WordPress จะแสดง Code Snippets 2 ชุดที่ต้องนำไปแทรก:

Code Snippet ที่ 1 — เพิ่มใน wp-config.php

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'yourdomain.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

วางบล็อกนี้ต่อจาก define( 'WP_ALLOW_MULTISITE', true ); ที่เพิ่งเพิ่มไปในขั้นตอนที่ 1

Code Snippet ที่ 2 — เพิ่มใน .htaccess

เปิดไฟล์ .htaccess ที่ root WordPress แล้วแทนที่ rule WordPress เดิมทั้งหมดด้วย rule ใหม่ที่ WordPress แสดงให้ ตัวอย่างทั่วไปมีลักษณะดังนี้:

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

หลังแก้ไขทั้งสองไฟล์แล้ว Log In ใหม่อีกครั้ง (WordPress บังคับ) แล้วไปที่ My Sites › Network Admin เพื่อจัดการ Network

ขั้นตอนที่ 3 — ตั้งค่า Wildcard DNS Record

เพื่อให้ Sub-site อย่าง shop.yourdomain.com หรือ blog.yourdomain.com ทำงานได้ ต้องมี Wildcard DNS A Record ใน Zone File ของโดเมน วิธีตั้งค่าใน DirectAdmin ของ AsiaGB:

  1. เข้า DirectAdmin › DNS Management
  2. เลือกโดเมนที่ใช้
  3. กด Add Record
  4. ใส่ค่าดังนี้:
Name:  *
Type:  A
Value: [IP Address ของ Hosting Server ของคุณ]
TTL:   14400

IP Address ของ Server ดูได้จาก DirectAdmin › Account Manager › DNS Management หรือดูจาก IP ของ A Record หลักของโดเมน หลังบันทึก รอการ Propagate DNS ประมาณ 5–30 นาที ทดสอบด้วยคำสั่ง nslookup test.yourdomain.com ควรได้ IP ของ Server กลับมา

เคล็ดลับ: หากใช้ Cloudflare เป็น DNS ให้เพิ่ม Wildcard Record ใน Cloudflare Dashboard (**Name:** * **Type:** A **Content:** [Server IP]) และเลือก Proxy Status เป็น DNS only (สีเทา) ก่อน ไม่ใช่ Proxied (สีส้ม) มิฉะนั้น SSL Wildcard ที่ออกผ่าน Let's Encrypt จะไม่สามารถ Verify ได้ด้วย HTTP Challenge ให้เปลี่ยนไปใช้ DNS Challenge แทน

ขั้นตอนที่ 4 — ติดตั้ง Wildcard SSL

Wildcard SSL ครอบคลุมทุก Subdomain ของโดเมน ทำให้ไม่ต้องออก Certificate แยกสำหรับแต่ละ Sub-site ใน DirectAdmin ของ AsiaGB สามารถ Request Let's Encrypt Wildcard ได้ดังนี้:

  1. เข้า DirectAdmin › SSL Certificates
  2. เลือก Free & automatic certificate from Let's Encrypt
  3. ใส่ Domain names รวมถึง yourdomain.com และ *.yourdomain.com
  4. เลือก Use an acme challenge to get the certificate
  5. กด Save

สำหรับ Let's Encrypt Wildcard ต้องใช้ DNS Challenge (ACME DNS-01) ซึ่ง DirectAdmin บาง Version รองรับอัตโนมัติ ถ้า Hosting รองรับ DirectAdmin API จะสะดวกที่สุด หรือใช้ SSL Wildcard เชิงพาณิชย์จาก AsiaGB ซึ่งรองรับการ Verify แบบ Email/File และออก Certificate ภายใน 15 นาที

# ทดสอบว่า SSL ครอบคลุม Wildcard แล้วหรือยัง
openssl s_client -connect test.yourdomain.com:443 -servername test.yourdomain.com 2>/dev/null | openssl x509 -noout -subject -altnames

ผลลัพธ์ควรมี DNS:*.yourdomain.com ใน Subject Alternative Names

ขั้นตอนที่ 5 — เพิ่ม Sub-site แรกใน Network

เมื่อตั้งค่า DNS และ SSL เสร็จแล้ว ให้เพิ่ม Sub-site ผ่าน Network Admin:

  1. เข้า My Sites › Network Admin › Sites
  2. คลิก Add New
  3. กรอก Site Address (ชื่อ Subdomain) เช่น shop (จะกลายเป็น shop.yourdomain.com)
  4. กรอก Site Title, Site Language และ Admin Email
  5. คลิก Add Site

หลังเพิ่มแล้ว ทดสอบเข้า https://shop.yourdomain.com ควรเห็นหน้า WordPress ของ Sub-site ใหม่ และ https://shop.yourdomain.com/wp-admin ควรเข้า Admin ได้

ขั้นตอนที่ 6 — จัดการ Plugin และ Theme บน Network

ใน Multisite การบริหาร Plugin และ Theme แตกต่างจาก WordPress ปกติ เพราะมีระดับการจัดการ 2 ชั้น:

Network-Activated Plugin

Plugin ที่ activate ในระดับ Network จะมีผลกับทุก Sub-site โดยอัตโนมัติ และ Admin ของแต่ละ Sub-site ไม่สามารถ deactivate ได้ ใช้สำหรับ Security, Cache, SEO หลักของ Network:

# ตัวอย่าง Plugin ที่มักใช้ Network-Activate
- Wordfence Security (ความปลอดภัยทั้ง Network)
- LiteSpeed Cache (Cache รวม)
- Yoast SEO (SEO settings ทุก Sub-site)
- WP Mail SMTP (ตั้งค่า SMTP เดียว ส่งเมลทุก Sub-site)

Site-Activated Plugin

Network Admin สามารถอนุญาตให้ Sub-site Admin activate Plugin เองได้ โดยไปที่ Network Admin › Settings › Network Settings และเปิด "Allow site administrators to install plugins"

Theme

Theme ต้อง install ที่ Network Admin Level ก่อน จากนั้น Sub-site จึงจะเห็น Theme นั้นใน Appearance ถ้าต้องการให้ Sub-site ทุกอันใช้ Theme เดียวกัน ให้ Network Enable Theme นั้นแล้วแต่ละ Sub-site activate เอง หรือกด "Enable" ใน Network Admin > Themes เพื่อ Make Available to all sites

การตั้งค่า wp-config.php เพิ่มเติมเพื่อ Performance

เมื่อใช้งาน Multisite มีการตั้งค่าเพิ่มเติมใน wp-config.php ที่ช่วยให้ระบบทำงานได้ดีขึ้น โดยเฉพาะเรื่อง Upload Size และ Memory:

/* WordPress Multisite — Performance Tweaks */

// เพิ่ม Memory Limit สำหรับ Network
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );

// ขนาด Upload ต่อไฟล์ (MB) สำหรับแต่ละ Sub-site
define( 'UPLOAD_SPACE_CHECK_DISABLED', true ); // ปิด storage quota check
// หรือตั้งค่าใน Network Admin > Settings > Upload space check quota

// เก็บ Revisions จำกัด
define( 'WP_POST_REVISIONS', 5 );

// Auto-save interval (วินาที)
define( 'AUTOSAVE_INTERVAL', 120 );

นอกจากนี้ควรตั้งค่า UPLOADS ให้ชัดเจนหาก Server มีปัญหาเรื่อง Path:

// กำหนด Upload Directory อย่างชัดเจน (ถ้าจำเป็น)
define( 'UPLOADS', 'wp-content/uploads' );

การแก้ปัญหาที่พบบ่อย

เมื่อตั้งค่า Multisite แบบ Subdomain มักพบปัญหาเหล่านี้:

Sub-site เปิดแล้วขึ้น "Site not found" หรือ "Error establishing a database connection"

สาเหตุหลักคือ Wildcard DNS ยังไม่ Propagate หรือ Web Server ไม่ได้รับ Request ของ Subdomain นั้น ตรวจดังนี้:

SSL ไม่ครอบคลุม Subdomain ใหม่

ถ้าใช้ Let's Encrypt ปกติ (ไม่ใช่ Wildcard) ต้องขอ Certificate ใหม่ทุกครั้งที่เพิ่ม Sub-site ซึ่งยุ่งยากมาก จึงแนะนำให้ใช้ Wildcard SSL ตั้งแต่ต้น ถ้าใช้ Wildcard แล้วยังเจอ SSL Error ให้ตรวจว่า Certificate Renewal ยังทำงานอยู่และยังครอบคลุม *.yourdomain.com

Admin ของ Sub-site ไม่เห็น Plugin ที่ต้องการ

Plugin ต้องถูก Network Admin install ก่อน และต้อง "Enable" ให้ Sub-site ก่อน Sub-site Admin จะ activate ได้ ไปที่ Network Admin › Plugins แล้วคลิก "Network Enable" หรือ "Enable" ที่ Plugin นั้น

Redirect Loop หรือ Mixed Content บน HTTPS

เกิดเมื่อ WordPress เก็บ siteurl หรือ home เป็น http:// ใน Database แต่ Server บังคับ HTTPS แก้ด้วยการเพิ่มใน wp-config.php:

// บังคับ HTTPS ทุก Sub-site
define( 'FORCE_SSL_ADMIN', true );
// ถ้าอยู่หลัง Reverse Proxy/Load Balancer
if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
    $_SERVER['HTTPS'] = 'on';
}

คำถามที่พบบ่อย (FAQ)

WordPress Multisite แบบ Subdomain ต้องการ Hosting แบบไหน

ต้องการ Hosting ที่รองรับ Wildcard DNS และ Wildcard SSL เพราะ Sub-site แต่ละอันจะเปิดที่ Subdomain เช่น site1.yourdomain.com, site2.yourdomain.com ดังนั้น DNS ต้องมี Wildcard A Record (*.yourdomain.com) และ SSL Wildcard ครอบคลุมทุก Subdomain Hosting ที่ให้สิทธิ์แก้ไข DNS Zone File และติดตั้ง Wildcard SSL ได้เองจะทำให้ตั้งค่าได้ง่ายและปลอดภัยที่สุด

เปิด Multisite แล้วปลั๊กอินเดิมใช้ได้ไหม

ปลั๊กอินส่วนใหญ่ใช้ได้ปกติ แต่มีความแตกต่างคือ Network Admin (Super Admin) เท่านั้นที่ activate ปลั๊กอินได้ในระดับ Network-wide หรือให้แต่ละ Sub-site admin activate เองก็ได้ บางปลั๊กอินที่เขียนมาไม่รองรับ Multisite อาจทำงานผิดปกติเมื่อ activate แบบ Network โดยเฉพาะปลั๊กอินที่ใช้ hard-coded absolute path ควรทดสอบใน Staging ก่อนเปิดใช้งานจริง

Multisite แบบ Subdomain กับ Subdirectory ต่างกันอย่างไร

Subdomain (site1.domain.com) ทำงานได้ทั้งกับ WordPress ที่ติดตั้งใหม่และที่มีอยู่เดิม เหมาะกับการมีหลายเว็บที่เป็นอิสระหรือลูกค้าคนละราย เพราะ URL ดูเป็นเอกเทศและตั้ง SSL Wildcard ครอบคลุมได้ทีเดียว ส่วน Subdirectory (domain.com/site1) ง่ายกว่าในแง่ไม่ต้องตั้ง DNS Wildcard แต่มีข้อจำกัดว่าต้องติดตั้งบน WordPress ใหม่เท่านั้น

ลบ Sub-site ออกจาก Network ได้ไหม ข้อมูลจะหายหรือเปล่า

ลบได้จาก Network Admin › Sites › Delete การลบแบบปกติจะลบ Database Tables และไฟล์ wp-content/uploads/sites/[site-id]/ ออกด้วย ถ้าต้องการเก็บข้อมูลไว้ก่อน ให้ Export ผ่าน Tools › Export ของ Sub-site นั้นก่อนเสมอ

Hosting ที่ออปติไมซ์สำหรับ WordPress

AsiaGB Hosting รองรับ PHP 8.3 MySQL LiteSpeed Cache และ WordPress Toolkit เริ่มต้น 500 บาท/ปี

ดูแพ็กเกจ Hosting