คำตอบสั้น ๆ: เปิดใช้ Multisite เพื่อดูแลหลายเว็บจากหลังบ้านเดียว พร้อมข้อจำกัดที่ต้องรู้ก่อนตัดสินใจ และวิธีเลือกระหว่างแบบซับโดเมนกับซับโฟลเดอร์
คู่มือนี้อธิบาย WordPress Multisite ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Multisite ทำให้ WordPress หนึ่งชุดให้บริการหลายเว็บได้ โดยใช้ไฟล์ ปลั๊กอิน และธีมร่วมกัน เหมาะกับองค์กรที่มีเว็บหลายสาขา สถาบันการศึกษาที่มีเว็บหลายคณะ หรือธุรกิจที่มีหลายแบรนด์
ก่อนตัดสินใจต้องรู้ข้อจำกัด ปลั๊กอินและธีมต้องติดตั้งจากส่วนกลางเท่านั้น หากเว็บหนึ่งต้องการปลั๊กอินที่ชนกับอีกเว็บจะทำไม่ได้ และการกู้คืนเว็บเดียวจากข้อมูลสำรองยุ่งยากกว่าการติดตั้งแยกกันมาก หากเว็บแต่ละแห่งแตกต่างกันมาก การติดตั้งแยกอาจเหมาะกว่า
สิ่งที่ต้องเตรียม (WordPress Multisite)
- WordPress ที่ติดตั้งเรียบร้อยและยังไม่มีเนื้อหามาก
- สิทธิ์แก้ไฟล์
wp-config.phpและคอนฟิกเว็บเซิร์ฟเวอร์ - Wildcard DNS หากเลือกแบบซับโดเมน
- สำรองข้อมูลก่อนเสมอ การเปลี่ยนเป็น Multisite ย้อนกลับยาก
ขั้นตอนที่ 1: เลือกรูปแบบ (WordPress Multisite)
- ซับโดเมน เช่น
sale.example.comเหมาะเมื่อแต่ละเว็บเป็นหน่วยงานอิสระ ต้องตั้ง Wildcard DNS และใบรับรอง SSL แบบ Wildcard - ซับโฟลเดอร์ เช่น
example.com/sale/ตั้งค่าง่ายกว่า ใช้ใบรับรองเดิมได้ แต่ URL ยาวและแยก SEO ได้น้อยกว่า
เลือกแล้วเปลี่ยนภายหลังยากมาก ตัดสินใจให้รอบคอบตั้งแต่ต้น หากไม่แน่ใจและเว็บทั้งหมดเป็นขององค์กรเดียวกัน ซับโดเมนมักยืดหยุ่นกว่าในระยะยาว
ขั้นตอนที่ 2: เปิดโหมด Multisite (WordPress Multisite)
nano /var/www/example.com/wp-config.php
เพิ่มก่อน /* That's all, stop editing! */
define('WP_ALLOW_MULTISITE', true);
รีเฟรชหน้าหลังบ้าน จะเห็นเมนูใหม่ที่ Tools แล้ว Network Setup
ก่อนดำเนินการต่อ ระบบจะขอให้ปิดปลั๊กอินทั้งหมดก่อน
cd /var/www/example.com
wp plugin deactivate --all
ขั้นตอนที่ 3: ติดตั้งเครือข่าย
ในหน้า Network Setup เลือกรูปแบบที่ตัดสินใจไว้ ตั้งชื่อเครือข่ายและอีเมลผู้ดูแล แล้วกด Install
ระบบจะแสดงโค้ดสองชุดให้เพิ่มเอง ชุดแรกลงใน wp-config.php
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
ชุดที่สองลงใน .htaccess สำหรับ Apache หรือแปลงเป็นกฎของ Nginx
# Nginx สำหรับ Multisite แบบซับโฟลเดอร์
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^(/[^/]+)?(/wp-.*) $2 last;
rewrite ^(/[^/]+)?(/.*\.php) $2 last;
}
sudo nginx -t && sudo systemctl reload nginx
ล็อกอินใหม่หลังบันทึก จะเห็นเมนู My Sites แล้ว Network Admin
ขั้นตอนที่ 4: ตั้ง DNS และ SSL สำหรับซับโดเมน
# Wildcard A Record
*.example.com. IN A 203.0.113.10
dig +short test.example.com
ขอใบรับรอง Wildcard ซึ่งต้องยืนยันผ่าน DNS
sudo certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
-d 'example.com' -d '*.example.com' \
--agree-tos -m [email protected]
server {
listen 443 ssl;
server_name example.com *.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/example.com;
# ...
}
ขั้นตอนที่ 5: เพิ่มเว็บใหม่
# ผ่าน WP-CLI ซึ่งเร็วกว่าและทำซ้ำได้
wp site create --slug=sale --title="ฝ่ายขาย" [email protected]
wp site list --fields=blog_id,url,registered
wp site list --field=url
สั่งงานกับเว็บใดเว็บหนึ่งด้วย --url
wp --url=sale.example.com option get blogname
wp --url=sale.example.com plugin list
wp site list --field=url | xargs -I% wp --url=% core update-db