ภาพรวมขั้นตอนการย้าย WordPress
การย้าย WordPress ประกอบด้วย 6 ขั้นตอนหลัก ซึ่งถ้าทำตามลำดับอย่างรอบคอบ จะสำเร็จได้ภายใน 1–2 ชั่วโมงสำหรับเว็บขนาดกลาง
- Backup ไฟล์ทั้งหมดจาก hosting เดิม
- Export database จาก hosting เดิม
- สร้าง database ใหม่บน hosting ใหม่
- Upload ไฟล์ไปยัง hosting ใหม่
- Import database และแก้ไข wp-config.php
- ทดสอบเว็บผ่าน IP จากนั้นเปลี่ยน Nameserver
ขั้นตอนที่ 1 — Backup ไฟล์ทั้งหมด
ใช้ cPanel File Manager หรือ FTP client เช่น FileZilla เพื่อดาวน์โหลดไฟล์ WordPress ทั้งหมด โดยเฉพาะโฟลเดอร์ที่สำคัญ
wp-content/themes/— theme ที่ใช้งานwp-content/plugins/— plugin ทั้งหมดwp-content/uploads/— รูปภาพและไฟล์ mediawp-config.php— ไฟล์ config (เก็บไว้อ่านข้อมูล DB เดิม).htaccess— การตั้งค่า URL rewrite
ขั้นตอนที่ 2 — Export Database
เข้า cPanel > phpMyAdmin เลือก database ของ WordPress แล้วคลิก Export
# Export ผ่าน command line (ถ้ามี SSH)
mysqldump -u username -p database_name > wordpress_backup.sql
# หรือ export พร้อม structure + data
mysqldump -u username -p --add-drop-table database_name > wordpress_full.sql
เก็บไฟล์ .sql ที่ได้ไว้ที่เครื่องของคุณ
ขั้นตอนที่ 3 — สร้าง Database ใหม่บน Hosting ใหม่
- เข้า cPanel ของ hosting ใหม่ > Databases > MySQL Databases
- สร้าง database ใหม่ จดชื่อไว้
- สร้าง MySQL user ใหม่ กำหนดรหัสผ่านที่แข็งแกร่ง
- เพิ่ม user เข้า database โดยให้สิทธิ์ "All Privileges"
ขั้นตอนที่ 4 — Upload ไฟล์ไปยัง Hosting ใหม่
ใช้ FileZilla หรือ FTP client อัปโหลดไฟล์ทั้งหมดไปที่ public_html ของ hosting ใหม่ ขั้นตอนนี้ใช้เวลานานที่สุดหากเว็บมีรูปภาพมาก
# อัพโหลดผ่าน rsync (ถ้ามี SSH ทั้งสองฝั่ง)
rsync -avz --progress /local/wordpress/ [email protected]:public_html/
# หรือ scp สำหรับการโอนไฟล์เดี่ยว
scp -r /local/wp-content/uploads/ [email protected]:public_html/wp-content/
ขั้นตอนที่ 5 — Import Database และแก้ไข wp-config.php
เข้า phpMyAdmin ของ hosting ใหม่ เลือก database ที่สร้างไว้ คลิก Import แล้วเลือกไฟล์ .sql ที่ backup มา
# Import ผ่าน command line
mysql -u username -p database_name < wordpress_backup.sql
จากนั้นแก้ไข wp-config.php ในโฟลเดอร์ที่ upload ไป
// แก้ค่าเหล่านี้ให้ตรงกับ database ใหม่
define('DB_NAME', 'new_database_name');
define('DB_USER', 'new_db_user');
define('DB_PASSWORD', 'new_db_password');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');
ขั้นตอนที่ 6 — ทดสอบผ่าน IP ก่อนเปลี่ยน Nameserver
แก้ไขไฟล์ hosts บนเครื่องของคุณให้ domain ชี้ไปที่ IP ของ hosting ใหม่ก่อน เพื่อทดสอบโดยไม่กระทบผู้เข้าชมจริง
# แก้ไขไฟล์ hosts (macOS/Linux)
sudo nano /etc/hosts
# เพิ่มบรรทัด:
# 123.45.67.89 yoursite.com www.yoursite.com
# Windows: C:\Windows\System32\drivers\etc\hosts
# เปิด Notepad ในฐานะ Administrator แล้วแก้ไขเช่นเดียวกัน
เปิด browser ทดสอบว่าเว็บทำงานปกติ รูปภาพขึ้นครบ login ได้ ส่ง contact form ได้ เมื่อมั่นใจแล้วจึงเปลี่ยน Nameserver ที่ Domain Registrar
วิธีย้ายด้วย Duplicator Plugin (ง่ายกว่า)
สำหรับผู้ที่ไม่คุ้นเคยกับ command line ใช้ Duplicator plugin ได้ โดยมันจะสร้าง installer.php และ archive.zip ให้อัปโหลดไปยัง hosting ใหม่แล้วรันผ่าน browser
- ติดตั้ง Duplicator บน WordPress เดิม
- ไปที่ Duplicator > Packages > Create New
- ดาวน์โหลดไฟล์ installer.php และ archive.zip
- อัปโหลดทั้งสองไฟล์ไปยัง public_html ของ hosting ใหม่
- เปิด
yoursite.com/installer.phpแล้วทำตาม wizard - กรอกข้อมูล database ใหม่และ URL ใหม่
ตรวจสอบว่าการย้ายสำเร็จ
# ตรวจสอบ WordPress URL ใน database
mysql -u user -p db_name -e "SELECT option_value FROM wp_options WHERE option_name IN ('siteurl','home');"
# เช็ค PHP version บน hosting ใหม่
php -v
# ทดสอบ page load time
curl -o /dev/null -w "Total: %{time_total}s\n" -s https://yoursite.com
# ตรวจสอบ error log
tail -50 ~/logs/error_log
แก้ปัญหาที่พบบ่อย
URL ผิดหลังย้าย (redirect loop หรือ 404)
แก้ไข siteurl และ home URL ใน database โดยตรงผ่าน phpMyAdmin ตาราง wp_options หรือใช้คำสั่ง WP-CLI
wp option update siteurl 'https://yoursite.com'
wp option update home 'https://yoursite.com'
wp search-replace 'http://oldsite.com' 'https://newsite.com' --all-tables
รูปภาพไม่แสดงหลังย้าย
ตรวจสอบว่าโฟลเดอร์ wp-content/uploads/ ถูกอัปโหลดครบ และ file permission ถูกต้อง (755 สำหรับ directory, 644 สำหรับไฟล์) ถ้ายังไม่ขึ้น ให้ไป Settings > Media ใน WordPress admin แล้วตรวจดู Upload Path
Email ไม่ส่งบน Hosting ใหม่
ตรวจสอบว่า hosting ใหม่รองรับ PHP mail() หรือต้องตั้งค่า SMTP ผ่าน plugin เช่น WP Mail SMTP โดยกำหนด SMTP server ของ email provider ที่ใช้งาน
Plugin/Theme ทำงานผิดปกติหลังย้าย
ตรวจสอบ PHP version ของ hosting ใหม่ว่าตรงกับที่เว็บต้องการ บาง plugin ต้องการ PHP 8.0+ ถ้า hosting ใหม่ยังใช้ PHP 7.4 ให้อัปเกรดผ่าน cPanel ก่อน
คำถามที่พบบ่อย
ย้าย WordPress ใช้เวลานานแค่ไหน
เว็บขนาดเล็ก (ไฟล์ไม่กี่ร้อย MB) ใช้เวลาประมาณ 30–60 นาที เว็บขนาดใหญ่ที่มีรูปภาพหลาย GB อาจใช้เวลาหลายชั่วโมง ส่วนการ propagate DNS อาจใช้เวลา 24–48 ชั่วโมง
เว็บจะ downtime ระหว่างย้ายไหม
ถ้าทำถูกวิธีเว็บจะไม่ downtime เลย ระหว่างเตรียม hosting ใหม่ เว็บเก่ายังทำงานตามปกติ และเมื่อเปลี่ยน DNS แล้ว traffic จะค่อยๆ เปลี่ยนมาหา hosting ใหม่
ต้องซื้อ license plugin ใหม่ไหมเมื่อย้าย hosting
ส่วนใหญ่ไม่ต้อง แต่ premium plugin บางตัวผูก license กับ domain หรือ IP ให้ตรวจสอบกับผู้พัฒนา plugin นั้นๆ ก่อนย้าย บาง plugin ต้อง deactivate บน hosting เดิมก่อน activate บนใหม่