วิธีย้าย WordPress ขึ้นโฮสต์จริง

7 ขั้นตอนย้ายเว็บไซต์ที่สร้างด้วย WordPress

เหมือนจะเป็นเรื่องง่ายใช่มั้ยครับ กับอีแค่ย้ายเว็บไซต์จากโดเมนนึงไปโดเมนนึง หรือย้ายจาก localhost ขึ้นมาบน live server ก็ตาม แต่ความเป็นจริงแล้ว CMS หลายๆตัวซึ่งรวมไปถึง WordPress เองเนี่ย มันมีวิธีที่ต่างออกไปจากเว็บไซต์ที่เขียนขึ้นมาเองอยู่พอสมควรเลยนะ แล้วผมก็เห็นหลายๆ บทความเขียนถึงการย้ายได้ไม่ค่อยชัดเจนแล้วก็ถูกต้องเสียเท่าไหร่ ส่วนตัวเคยเอาเรื่องนี้ไปสอนกับบริษัทนึงในคอร์ส WordPress Customization เลยนึกอยากจะเขียนเป็นบทความสั้นๆ เผื่อจะเป็นประโยชน์ให้คนอื่นบ้าง

วิธีที่เขียนนี้ก็ใช้ได้ทั้งย้ายจากเครื่องตัวเอง(localhost) ขึ้นมาที่ hosting และ ย้ายจากเว็บไซต์นึงไปอีกเว็บไซต์นึงด้วยเหมือนกัน โดยในกรณีตัวอย่างนี้ขอสมมติว่าย้ายจาก localhost ไปยัง Jir4yu.me แล้วกันครับ ผมขอหยิบภาพจาก slide ที่เคยสอนเองมาใช้ในบทความนี้ละกันเพื่อให้เห็นหลักการคร่าวๆ ก่อน

วิธีย้าย host ของเว็บไซต์ที่ขึ้นด้วย wordpress
วิธีย้าย host ของเว็บไซต์ที่ขึ้นด้วย wordpress

1. Export ฐานข้อมูลเก่า

เข้าไปที่ phpMyAdmin ของเครื่องเราเองครับ ส่วนมากถ้าไม่ได้เปลี่ยนแปลงค่าอะไรตอนติดตั้ง web server จะต้องเข้าตามลิงค์ที่เห็นด้านล่างนี้

http://localhost/phpmyadmin

ให้คลิกเลือกฐานข้อมูลของ WordPress ที่เราต้องการจะย้ายก่อนอย่างเช่นฐานข้อมูลลูกเก่าที่ชื่อว่า mydatabase จากนั้นก็เลือกที่แท็บ Export แล้วกดปุ่ม Go จะได้ไฟล์มาเก็บไว้ที่เครื่องเรา

export-database

2. อัพโหลดไฟล์ WordPress

ให้เราใช้โปรแกรม FTP เพื่อทำการโอนไฟล์จากเครื่องเราขึ้นไปบน live server โดยจะต้องอัพโหลดไฟล์ทั้งหมดของ WordPress ขึ้นไป ตรงนี้อาจจะใช้เวลาสักนิดนึงเพื่ออัพโหลดไฟล์ทั้งหมดครับ ส่วนใครที่ advance หน่อยก็ติดตั้ง git ที่เครื่องปลายทางแล้ว git pull ไปเลยก็ได้ครับ

upload-file-wordpress

3. สร้างฐานข้อมูล

เราต้องเข้าไปสร้างฐานข้อมูลบน live server เพื่อที่จะอัพโหลดไฟล์ฐานข้อมูลที่ได้จากขั้นตอนที่ 1 โดยวิธีสร้างฐานข้อมูลนั้นก็ขึ้นอยู่กับแต่ละผู้ให้บริการ hosting ด้วย ซึ่งที่เห็นใช้กันเยอะในประเทศไทยก็จะเป็น DirectAdmin ส่วนของต่างประเทศที่นิยมก็จะเป็น cPanel

สร้างฐานข้อมูล wordpress

หากสงสัย หรือต้องการทราบวิธีในการสร้างฐานข้อมูล ก็ลองติดต่อ hosting ที่ใช้บริการดูครับ ในรูปด้านบนจะเป็นวิธีการสร้างฐานข้อมูลกับ hosting ที่ใช้ cPanel

4. Import ไฟล์ฐานข้อมูล

เมื่อสร้างฐานข้อมูลแล้ว ให้เราคลิกที่แท็บ Import จากนั้นให้กดปุ่ม Browse เพื่อเลือกไฟล์ฐานข้อมูลในเครื่องเราที่ได้จากขั้นตอนที่ 1 จากนั้นกดปุ่ม Go

import wordpress database

ถ้าหากการ import ฐานข้อมูลขึ้นไปเรียบร้อย เราจะสังเกตุเห็นตารางที่ถูกสร้างขึ้นด้านซ้ายมือที่หน้า phpMyAdmin ครับ

5. เปลี่ยน URL ของเว็บไซต์ในฐานข้อมูล

มีสองส่วนที่เราต้องแก้ไขใน phpMyAdmin นั่นคือให้เราคลิกไปที่ตาราง wp_options

change-option_value-wordpress

ให้เปลี่ยนค่าของ siteurl(option_id: 1) กับ home(options_id: 37) เป็น URL จริงของเว็บไซต์ที่เราต้องการจะใช้ ในตัวอย่างเราต้องเปลี่ยน option_value เป็น http://www.jir4yu.me

6. แก้ไขไฟล์ wp-config.php

เมื่อลองเรียกหน้าเว็บไซต์ http://www.jir4yu.me จะพบ “Error establishing a database connection” หรือภาษาไทยประมาณว่าไม่สามารถเชื่อมต่อกับฐานข้อมูลได้ ซึ่งเราต้องเข้าไปแก้ไขไฟล์ wp-config.php ในส่วนของ DB_NAME, DB_USER และ DB_PASSWORD เสียก่อน

แก้ไข wp-config

จากภาพตัวอย่างข้างต้น ให้เปลี่ยน mydatabase, demo-username และ demo-password เป็นค่าที่คุณใช้ในการสร้างและเชื่อมต่อฐานข้อมูลเองครับ

7. แก้ไข media path

สำหรับคนที่อัพโหลดรูปภาพ หรือเขียนบล็อกโพสต์ไปบ้างแล้วก็จำเป็นที่จะต้องแก้ไข media path เป็นขั้นตอนสุดท้าย โดยวิธีนี้จะช่วยให้รูปภาพที่ติดมากับโพสต์นั้นยังสามารถใช้งานได้ ให้เข้าไปที่ฐานข้อมูลที่เราเพิ่ง import เมื่อสักครู่ จากนั้นคลิกที่แท็บ SQL แล้วกรอก code ด้านล่างนี้ลงไปครับ

UPDATE wp_posts 
SET post_content = REPLACE
(post_content, 'localhost', 'www.jir4yu.me');

change-media-path

ที่ต้องเปลี่ยนคือค่า localhost/ กับ www.jir4yu.me เป็นค่าของคุณเองที่ใช้ อย่างเช่นเราลง WordPress ไว้ที่เครื่องตัวเองโดยเข้าผ่าน localhost/blog ก็ใส่ localhost/blog เป็นต้น

เสร็จแล้วกดปุ่ม Go ก็เป็นอันเรียบร้อยสำหรับการย้าย WordPress ขึ้นไปบน hosting หรือโดเมนปลายทาง ด้วย 7 ขั้นตอนนี้เว็บไซต์ใหม่ก็พร้อมใช้งานแล้วล่ะครับ

อัพเดท: 12/06/2017

สำหรับคนที่มีปัญหาเรื่องรูปภาพไม่ตามมาด้วย หรือ path ยังผิดอยู่บางส่วนสามารถใช้ code SQL ดังกล่าวด้านล่างนี้เพื่อแก้ไขในส่วนของ guid ได้ครับ โดยเปลี่ยนค่าตัวอักษรสีแดงเช่นเดียวกับที่ทำด้านบนเลย

UPDATE wp_posts
SET guid = replace(guid, 'localhost','www.jir4yu.me');
UPDATE wp_posts SET post_content = replace(post_content, 'localhost', 'www.jir4yu.me');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'localhost','www.jir4yu.me');
แชร์บทความนี้

27 ความเห็นเกี่ยวกับ วิธีย้าย WordPress ขึ้นโฮสต์จริง

  1. ข้อหนึ่งเข้าใจ หลังจากข้อสองลงมา งงอ่ะค่ะ อธิบายละเอียดกว่านี้อีกได้ไหมคะ
    ข้อสาม สร้างฐานอย่างไงคะ
    ข้อหก เข้าอย่างไง
    ข้อเจ็ดยิ่งงค่ะ
    ช่วยตอบหน่อยนะคะ ต้องทำอย่างไรเอาเว็บขึ้นโฮสจริง มือใหม่อ่ะค่ะ
    ขอบคุณล่วงหน้าค่ะ

    1. อาจจะต้องทำความเข้าใจพื้นฐานของ hosting ก่อนหน่ะครับ แต่ถ้าทำบนเครื่องของเราเองก็จะง่ายขึ้นหน่อย ผมแนะนำหนังสือ wordpress เล่มนี้ครับ https://www.jindatheme.com/blog/%E0%B8%AB%E0%B8%99%E0%B8%B1%E0%B8%87%E0%B8%AA%E0%B8%B7%E0%B8%AD-wordpress-%E0%B8%97%E0%B8%B3%E0%B9%80%E0%B8%A7%E0%B9%87%E0%B8%9A%E0%B9%84%E0%B8%8B%E0%B8%95%E0%B9%8C/

    1. UPDATE wp_posts
      SET post_content = REPLACE
      (post_content, ‘localhost’, ‘www.jir4yu.me’);

      ได้เปลี่ยนตรง http://www.jir4yu.me เป็นชื่อเว็บตัวเองแล้วใช่มั้ยครับ

  2. ทำเสร็จแล้ว แต่มันมาแค่หน้าแรกหน้าเดียว
    หน้าอื่นขึ้น
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at info@attraction.st.tni.ac.th to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.

      • อย่างแรกคือ FTP เข้าไปลบไฟล์ .htaccess ที่ root ของเว็บที่เราย้ายก่อนครับ
      • แล้วเข้าไปหลังบ้าน เข้าไปกด update permalink ก็เป็นอันเรียบร้อยครับผม
    1. ลองเปิด console ของ web browser ขึ้นมาดูหน่อยครับว่าแจ้ง error เรียกไปหา path ของรูปที่ URL ไหน

  3. ซื้อหนังสือที่แนะนำผ่าน ookbee ได้รับเมลล์ยืนยันการชำระเงิน แต่ยังไม่ได้ไฟล์อีบุ๊คเลยค่ะ ไม่เคยซื้อผ่าน ookbee มาก่อน ยังไงดีคะ?

    1. ถ้าซื้อผ่าน ookbee ต้องเข้าไปดาวโหลดไฟล์หนังสือจาก app ของ ookbee โดยตรงแทนครับ ไม่ทราบว่าตอนนี้ได้หรือยังครับ? ลองติดต่อ support ของ ookbee ที่ https://www.ookbee.com/contact ครับผม

    1. ลองเปิด browser console ขึ้นมาดูหน่อยครับ ว่ามี error แจ้งว่าอะไรบ้าง
      เป็นไปได้ว่าอาจจะเป็นเพราะลิงค์ที่ใส่ใน code sql ไม่เหมือนกันกับเว็บที่ใช้

  4. เปลี่ยนแก้ไขไฟล์ wp-config.php ตามแล้วมันยังขึ้น Error establishing a database connection ทำไงอ่าคับ

    1. แสดงว่าค่าที่กรอกยังไม่ถูกต้องกับที่สร้างฐานข้อมูลไว้ครับ
      ลองเช็คทั้ง host username และ password ดูอีกที แล้วอัพโหลดขึ้นไปทับใหม่นะครับ

    1. เปลี่ยนจากตัวหนังสือสีน้ำเงินเป็นเว็บไซต์ที่ถูกต้องแล้วใช่ไหมครับ
      เว็บต้องมี http:// หรือ https:// นำหน้าด้วยนะครับผม

  5. สอบถามค่ะ
    ถ้าเราย้าย wordpress จาก Local host ไปที่ website แต่ ยังโดน Block by Cors Policy อยู่ ยังดึงข้อมูลมาจาก xampp มีวิธีแก้ไหมคะ

    ของคุณค่ะ

    1. สวัสดีครับ แนะนำให้อัพเดทเปลี่ยน url ของไฟล์รูปทั้งหมดจาก localhost เป็น url ของ website ที่ใช้งานจริงแทนครับ วิธีการคือเข้าไปที่ phpmyadmin > เลือกฐานข้อมูล > ไปที่แท็บ SQL แล้ววางโค้ดด้านล่างสุดของบทความลงไปได้เลยครับ (อย่าลืมเปลี่ยน url ในโค้ดเป็นของคุณนะครับผม)

  6. ของผมมี พื้นหลัง
    แต่ ของเพื่อนผมไม่มี พื้นหลังอะครับ พอเอา ของผมใส่ไป ต้องแก้ตรงไหนครับ

  7. คือหนูสร้างเว็ปไซด์เวิร์ดเพลสแบบติดตั้งบนเครื่องตัวเองเสร็จแล้ว จะย้ายไปติดต้องบนเว็ปโฮมติ้งใช้วีธีนี้ชั่ยมั่ยคร่า

แสดงความเห็นของคุณที่นี่

กรุณากรอกอีเมล์ของคุณก่อนส่งข้อมูล เพื่อรับการแจ้งเตือนเมื่อมีคนมาตอบข้อความของคุณ