การเปลี่ยนชื่อประเภทโพสต์ที่กำหนดเองและ Taxonomies


31

ฉันเริ่มพัฒนาเว็บไซต์ที่มีโพสต์ที่กำหนดเองมากกว่าหนึ่งโหล ฉันต้องการเปลี่ยนชื่อสักสองสามรายการไม่ใช่เฉพาะค่าที่แสดง แต่เป็นชื่อประเภทโพสต์ที่กำหนดเองจริง ฉันกังวล แต่เพียงแค่เรียกใช้แบบสอบถามการปรับปรุง SQL ที่ฉันจะพลาดบางสถานที่ที่ฉันต้องเปลี่ยนสิ่งหรือเขียนทับส่วนของข้อมูลต่อเนื่อง ฉันได้ป้อนข้อมูลไปแล้วมากกว่า 3,000 รายการดังนั้นฉันจึงไม่สามารถรีสตาร์ทด้วยฐานข้อมูลที่สะอาด

วิธีที่ดีที่สุดในการเปลี่ยนชื่อประเภทโพสต์ที่กำหนดเองคืออะไร วิธีการเกี่ยวกับการเปลี่ยนชื่ออนุกรมวิธาน?


คำถามติดตามในหลอดเลือดดำเดียวกันนั้นเกี่ยวข้องกับกฎ. htaccess ที่เขียนซ้ำแบบกำหนดเอง จะมีกฎที่เหลืออยู่มากมายอุดตันฐานข้อมูลของฉันหรือไม่ ฉันยังไม่ได้เปิดตัวเว็บไซต์ดังนั้นฉันจึงไม่ต้องการให้ลิงก์เก่า ๆ ถูกเปลี่ยนเส้นทาง
Derek Perkins

คำตอบ:


47

แบบสอบถาม SQL สำหรับการเปลี่ยนชื่อโพสต์:

UPDATE  `wp_posts` SET  `post_type` =  '<new post type name>' WHERE  `post_type` = '<old post type name>';

แบบสอบถาม SQL สำหรับการเปลี่ยนชื่ออนุกรมวิธาน:

UPDATE  `wp_term_taxonomy` SET  `taxonomy` =  '<new taxonomy name>' WHERE  `taxonomy` = '<old taxonomy name>';

ที่ควรดูแลทุกพื้นที่ฐานข้อมูล เพียงจำไว้ว่าให้ตรงกับชื่อใหม่ในรหัสที่โพสต์ประเภทหรือ taxonomies มีการลงทะเบียน เท่าที่ฉันรู้ว่าสิ่งนี้ยังไม่ได้จัดการในปลั๊กอินใด ๆ


9
คำตอบที่ยอดเยี่ยมสิ่งที่ฉันต้องการ ต่อไปนี้เป็นเคล็ดลับในกรณีที่ผู้อื่นประสบปัญหาเดียวกับที่ฉันทำ: หลังจากที่ฉันเรียกใช้แบบสอบถามและอัปเดตรหัสของฉันสิ่งต่าง ๆ ใช้งานได้ แต่เมื่อฉันพยายามไปที่หน้าสำหรับรายการเนื้อหาแต่ละรายการฉันพบข้อผิดพลาด 404 ฉันคิดว่าแคชของลิงก์ถาวรจำเป็นต้องรีเซ็ต ฉันไปที่เครื่องมือ> ลิงก์ถาวรแล้วคลิกบันทึกจากนั้นหน้ารายละเอียดเริ่มทำงาน
Andy Giesler

เมื่อฉันทำสิ่งนี้ฉันได้อัปเดตฟิลด์ guid เช่นกัน สิ่งนี้อาจช่วยทำให้ไม่จำเป็นต้องสร้างลิงก์ถาวรอีกครั้งตามที่ @AndyGiesler พูดถึง เพียงรวมสิ่งต่อไปนี้ในคำสั่ง UPDATE ของคุณ: guid = REPLACE (guid, '<ชื่อประเภทโพสต์เก่า>', '<ชื่อประเภทโพสต์ใหม่>')
rinogo

เพียงเพิ่มข้อมูลเพิ่มเติมเล็กน้อยเพื่อแสดงความคิดเห็นของ rinogo นี่เป็นวิธีที่ปลอดภัยกว่าในการอัปเดต guid: อัปเดต wp_posts SET guid = แทนที่ (guid, 'post_type = <ชื่อประเภทโพสต์เก่า>', 'post_type = <ชื่อประเภทโพสต์ใหม่ > ');
David

เพียงแค่ต้องทราบว่าคุณจะต้องดูชื่อตารางของคุณเมื่อทำงานบน multisite
acSlater

6

สวัสดี@ ดีเร็กเพอร์กินส์:

โดยทั่วไป@John คำตอบ P โบลชเป็นจุดบนแต่มีข้อแม้ ปลั๊กอินและแม้กระทั่งธีมที่กำหนดเองสามารถและอาจเก็บข้อมูลประเภทโพสต์และเพื่อให้แน่ใจว่าคุณจะไม่เสียหายข้อมูลของคุณคุณต้องให้แน่ใจว่าปลั๊กอินและธีมของคุณไม่ได้จัดเก็บประเภทโพสต์หรือถ้าพวกเขาปรับปรุงข้อมูลของพวกเขา เช่นกัน

คุณบอกเราได้ไหมว่าคุณใช้ปลั๊กอินอะไร


นั่นเป็นจุดที่ดี ฉันกำลังสร้างชุดรูปแบบของฉันดังนั้นฉันจะต้องผ่านและเปลี่ยนรหัสของฉัน ฉันไม่มีปลั๊กอินที่เก็บข้อมูลประเภทโพสต์ที่กำหนดเอง
Derek Perkins

นี่เป็นจุดที่ดี ฉันใช้ฟิลด์กำหนดเองขั้นสูงและสำหรับแต่ละกลุ่มฟิลด์ที่แนบกับโพสต์นั้นคุณต้องรีเซ็ตเป็นชื่อ CPT ใหม่ด้วยตนเอง หลังจากนั้นก็ใช้งานได้ดีแม้ว่า
Chris Rae

4

หากคุณไม่ต้องการที่จะทำแบบสอบถาม SQL ด้วยตัวเองด้วยตนเองมีสองสามปลั๊กอินที่คุณสามารถใช้:

ฉันใช้ประเภทการแปลงโพสต์เป็นโพสต์การเปลี่ยนแปลงจำนวนมากสำเร็จแล้ว

สำหรับการแปลงโพสต์ที่มีความผิดปกติแล้วPost Type Switcherเป็นตัวเลือกที่ดีกว่า


ขอขอบคุณที่โพสต์ลิงก์เหล่านั้น ฉันทำงานได้ดีกับการสืบค้น SQL ด้วยตัวเอง แต่สิ่งเหล่านี้จะเป็นประโยชน์สำหรับผู้อื่นที่เจอการโพสต์นี้
Derek Perkins

นี้ดูเหมือนว่าจะแปลงประเภทโพสต์ไม่ได้เปลี่ยนชื่อพวกเขา
vladkras
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.