ย้าย WordPress ไป Hosting ใหม่ ทำเองได้

ขั้นตอนครบจบในที่เดียว สำหรับการ migrate WordPress ไปยัง hosting ใหม่โดยไม่ต้องง้อผู้เชี่ยวชาญ

ย้าย WordPress ไป Hosting ใหม่

ภาพรวมขั้นตอนการย้าย WordPress

การย้าย WordPress ประกอบด้วย 6 ขั้นตอนหลัก ซึ่งถ้าทำตามลำดับอย่างรอบคอบ จะสำเร็จได้ภายใน 1–2 ชั่วโมงสำหรับเว็บขนาดกลาง

  1. Backup ไฟล์ทั้งหมดจาก hosting เดิม
  2. Export database จาก hosting เดิม
  3. สร้าง database ใหม่บน hosting ใหม่
  4. Upload ไฟล์ไปยัง hosting ใหม่
  5. Import database และแก้ไข wp-config.php
  6. ทดสอบเว็บผ่าน IP จากนั้นเปลี่ยน Nameserver
สำคัญ: ห้ามเปลี่ยน Nameserver ก่อนตรวจสอบว่าเว็บทำงานปกติบน hosting ใหม่แล้ว เพราะเมื่อ DNS propagate แล้วจะแก้ไขยาก

ขั้นตอนที่ 1 — Backup ไฟล์ทั้งหมด

ใช้ cPanel File Manager หรือ FTP client เช่น FileZilla เพื่อดาวน์โหลดไฟล์ WordPress ทั้งหมด โดยเฉพาะโฟลเดอร์ที่สำคัญ

ขั้นตอนที่ 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 ใหม่

  1. เข้า cPanel ของ hosting ใหม่ > Databases > MySQL Databases
  2. สร้าง database ใหม่ จดชื่อไว้
  3. สร้าง MySQL user ใหม่ กำหนดรหัสผ่านที่แข็งแกร่ง
  4. เพิ่ม 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

  1. ติดตั้ง Duplicator บน WordPress เดิม
  2. ไปที่ Duplicator > Packages > Create New
  3. ดาวน์โหลดไฟล์ installer.php และ archive.zip
  4. อัปโหลดทั้งสองไฟล์ไปยัง public_html ของ hosting ใหม่
  5. เปิด yoursite.com/installer.php แล้วทำตาม wizard
  6. กรอกข้อมูล 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
Tip: หลังเปลี่ยน Nameserver รอ DNS propagate 24–48 ชั่วโมง ระหว่างนั้นเว็บจะยังทำงานได้จากทั้งสอง hosting เพราะคนละที่เห็น DNS ต่างกัน

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

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 บนใหม่