การค้นหาและแทนที่ฐานข้อมูล WordPress - วิธีที่ง่าย
มีหลายครั้งที่เราต้องทำ เปลี่ยน URL ในฐานข้อมูลเว็บไซต์ WordPress ของเรา. ตัวอย่างเช่นเราต้องทำสิ่งนี้หลังจากย้ายฐานข้อมูล WordPress จากไซต์เดียวเช่น จาก http://acme.com
ไซต์การผลิตระยะไกลเพื่อ http://acme.dev
เว็บไซต์การพัฒนาท้องถิ่นในคอมพิวเตอร์ของเรา.
WordPress.org โฮสต์ปลั๊กอินจำนวนมากเช่น WP DBManager และ WP Migrate DB และยังมีเครื่องมืออื่น ๆ อีกมากมายที่ช่วยให้คุณ นำเข้าฐานข้อมูล อย่างง่ายดาย ส่วนที่ยุ่งยากคือต้อง เปลี่ยนทุกอินสแตนซ์ URL ภายในฐานข้อมูล.
หลังจากย้ายฐานข้อมูลแล้ว URL ที่อยู่ภายในนั้น ยังคงชี้ไปที่ไซต์เก่า, ในกรณีนี้ถึง acme.com
. คุณอาจพบ URL เก่าใน wp_options
ตารางกำหนดเป็นค่าของ siteurl
และ บ้าน
ตัวเลือกและอาจฝังอยู่ในแถวและตารางอื่น ๆ ในฐานข้อมูล ในที่สุด URL เก่าเหล่านี้อาจป้องกันไม่ให้ไซต์ของคุณทำงานอย่างถูกต้องดังนั้นคุณต้อง เปลี่ยนเป็น URL ใหม่, ในตัวอย่างของเราที่จะ acme.dev
.
ณ จุดนี้การเข้าถึงเว็บไซต์การพัฒนาของเราที่ acme.dev
ก็จะนำไปสู่ ไปยังหน้าว่าง.
ดังนั้นเราจะเปลี่ยน URL ทั้งหมดเหล่านี้ในฐานข้อมูลได้อย่างไร?
เรียกใช้ SQL Query
โดยปกติแล้วคนจะเรียกใช้แบบสอบถาม SQL ต่อไปนี้ซึ่งแทนที่ค่าของ siteurl
และ บ้าน
ตัวเลือกใน wp_options
ตาราง.
อัพเดต wp_options SET option_value = แทนที่ (option_value, 'http://acme.com', 'http://acme.dev') WHERE option_name = 'home' หรือ option_name = 'siteurl';
จากนั้นพวกเขาใช้ SQL Query อื่นเพื่อแทนที่ URL ทั้งหมดที่เกิดขึ้นใน wp_posts
ตารางคือใน POST_CONTENT
คอลัมน์ของแต่ละแถว.
อัปเดต wp_posts SET post_content = แทนที่ (post_content, 'http://acme.com', 'http://acme.dev');
การเรียกใช้คิวรีเหล่านี้เป็นโซลูชันที่ใช้การได้ แต่ในขณะเดียวกันก็ไม่สะดวกในการทำ มันอาจเป็นเรื่องที่น่าวิตกกังวลเมื่อเห็นว่าฐานข้อมูลอาจเปลี่ยนไปเป็นยุ่งเหยิงได้อย่างไรเนื่องจากการดูแลง่าย ๆ ภายในแบบสอบถาม.
การใช้ประโยชน์จาก WP-CLI
เส้นทางอื่นที่เราสามารถทำได้และสิ่งที่ฉันได้พบว่าเป็นทางเลือกที่สะดวกกว่านั้นก็คือ การใช้ประโยชน์จากบรรทัดคำสั่ง WP-CLI. หมายความว่าคุณจะต้องติดตั้ง WP-CLI.
สมมติว่าคุณติดตั้ง WP-CLI และมี WP
คำสั่งสามารถเข้าถึงได้เป็นนามแฝงนำทางไปยังไดเรกทอรีที่ไฟล์ไซต์ WordPress ของคุณอยู่.
จากนั้นรันคำสั่งต่อไปนี้:
wp search-replace 'http://acme.com "http://acme.dev
พารามิเตอร์แรก, 'http://acme.com'
, เป็นรายการเก่าที่จะถูกแทนที่ด้วยรายการที่สอง, 'http://acme.dev'
.
บรรทัดคำสั่งจะค้นหาผ่าน ตารางทั้งหมดภายในฐานข้อมูล, ไม่เพียง แต่ POST_CONTENT
คอลัมน์และ wp_options
ตารางและ แทนที่ทุกอินสแตนซ์ ของรายการที่ส่งผ่านพารามิเตอร์ของคำสั่ง.
อย่างที่คุณเห็นจากภาพด้านบนมีการเปลี่ยนทั้งหมด 225 ครั้ง และเราได้ทำผ่านบรรทัดคำสั่งง่ายๆ.
ฉันคิดว่ามันเป็นมูลค่าการกล่าวขวัญว่าเราสามารถใช้ wp search-replace
คำสั่งไม่เพียง แต่แทนที่ URL แต่เป็นส่วนหนึ่งส่วนใดของ ราคา เก็บไว้ในฐานข้อมูลเช่นกัน นอกจากนี้เรายังสามารถ จำกัด การดำเนินการลงในตารางที่แน่นอนโดยส่งชื่อตารางเป็นพารามิเตอร์ที่สี่ดังนี้:
wp search-replace '.jpg ".webp' wp_posts
เรียกใช้คำสั่งด้านบนมันจะค้นหาเท่านั้น wp_posts
, ตารางที่เก็บเนื้อหาของเรา - โพสต์หน้า ฯลฯ - และแทนที่ส่วนขยายภาพจาก .JPG
ไปยัง .webp
.
WP-CLI ทำให้การดำเนินการ SQL แบบพันกันดูง่ายขึ้นและคุณสามารถทำงานกับมันได้อย่างสะดวกยิ่งขึ้น หากคุณต้องการปรับคำสั่งของคุณอย่างละเอียดดูเอกสารของ WP-CLI ที่ให้รายการตัวเลือกเพื่อดำเนินการขั้นสูงกับ wp search-replace
คำสั่ง.