ข้ามไปยังเนื้อหา
เครื่องมือ

SQL ค้นหาและแทนที่

เปลี่ยน URL ของเว็บไซต์โดยไม่ทำให้ข้อมูลแบบ serialized เสียหาย

ทำงานในเบราว์เซอร์ของคุณ ไม่มีการอัพโหลดอะไร

The change

Read this before you run anything

WordPress stores many options as PHP-serialized strings, and a serialized string records its own byte length — s:19:"http://old-site.com". A plain SQL replace changes the text but not the length, so PHP can no longer unserialize the row. It does not error. The value just silently becomes empty.

What you lose: widget configuration, theme mods, and most plugin settings. Usually you do not notice until days later, and by then the backup you would have restored is gone too.

This is why the queries below deliberately do not touch wp_options.

What are you moving?
search-replace.sql

Take a database backup first. Not 'consider taking one' — take one. There is no undo for an UPDATE.

เกี่ยวกับ SQL ค้นหาและแทนที่

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

FAQ

คำถาม

เปลี่ยน URL เว็บ WordPress ด้วยการ find and replace แบบ SQL ได้ไหม?

ไม่ปลอดภัย และนี่คือคำแนะนำแย่ๆ ที่ถูกแชร์มากที่สุดในวงการ WordPress หลาย option ถูกเก็บเป็นสตริงแบบ PHP-serialized ที่บันทึกความยาวไบต์ของตัวเองไว้ การ replace แบบ SQL ธรรมดาเปลี่ยนข้อความแต่ไม่เปลี่ยนความยาว PHP จึง unserialize แถวนั้นล้มเหลวเงียบๆ และค่านั้นก็หายไปเฉยๆ — พาการตั้งค่า widget, theme mod และ config ของปลั๊กอินหายไปด้วย

แล้วควรใช้อะไรแทน?

WP-CLI: 'wp search-replace old new --all-tables --dry-run' ก่อน แล้วค่อยรันแบบไม่มี --dry-run มันเข้าใจ serialization และเขียน length prefix ใหม่ได้ถูกต้อง ถ้าคุณไม่มีสิทธิ์เข้า CLI ปลั๊กอิน wordpress ชื่อ Better Search Replace ทำสิ่งเดียวกันได้จากหน้า admin

ควรอัปเดตคอลัมน์ GUID ไหม?

ไม่ GUID เป็นตัวระบุเฉพาะถาวรของโพสต์ ไม่ใช่ลิงก์ และตัวอ่าน feed ใช้มันเป็นกุญแจ การเขียนมันใหม่ทำให้ผู้ติดตามทุกคนเห็นโพสต์เก่าทุกโพสต์เป็นของใหม่เอี่ยม เอกสารของ WordPress ระบุชัดว่าอย่าเปลี่ยนมัน