Mengganti Nama Jenis Pos dan Taksonomi

31

Saya mulai mengembangkan situs dengan lebih dari selusin jenis pos kustom. Saya ingin mengganti nama beberapa dari mereka, bukan hanya nilai tampilan, tetapi nama jenis pos kustom yang sebenarnya. Namun saya khawatir dengan hanya menjalankan query pembaruan SQL yang saya akan kehilangan beberapa tempat di mana saya perlu mengubah hal-hal atau menimpa bagian dari data serial. Saya sudah memasukkan lebih dari 3.000 item, jadi saya tidak bisa memulai kembali dengan database yang bersih.

Apa cara terbaik untuk mengubah nama jenis posting khusus? Bagaimana dengan mengganti nama taksonomi?

Derek Perkins
sumber
Pertanyaan tindak lanjut dalam nada yang sama adalah tentang aturan penulisan ulang htaccess kustom. Apakah akan ada banyak aturan sisa yang menyumbat basis data saya? Saya belum meluncurkan situs ini, jadi saya tidak perlu tautan lama untuk diarahkan.
Derek Perkins

Jawaban:

47

Permintaan SQL untuk mengganti nama posting:

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

Permintaan SQL untuk mengganti nama taksonomi:

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

Itu harus mengurus semua area basis data. Ingatlah untuk mencocokkan nama-nama baru dalam kode tempat jenis tulisan atau taksonomi terdaftar. Sejauh yang saya tahu, ini belum ditangani dalam plugin apa pun.

John P Bloch
sumber
9
Jawaban luar biasa, persis apa yang saya butuhkan. Berikut tip dalam kasus orang lain mengenai masalah yang sama seperti saya: Setelah saya menjalankan kueri dan memperbarui kode saya, semuanya pada dasarnya berfungsi tetapi ketika saya mencoba membuka halaman untuk item konten individual, saya mendapatkan kesalahan 404. Saya pikir beberapa permalink cache perlu diatur ulang; Saya pergi ke Alat> Permalinks dan mengklik Simpan, kemudian halaman yang terperinci mulai bekerja.
Andy Giesler
Ketika saya melakukan ini, saya memperbarui bidang panduan juga. Ini mungkin membantu membuatnya tidak perlu untuk membuat ulang permalink seperti yang disebutkan oleh @AndyGiesler. Cukup sertakan yang berikut ini dalam pernyataan UPDATE Anda: guid = REPLACE (guid, '<nama tipe posting lama>', '<nama tipe posting baru>')
rinogo
Hanya untuk menambahkan sedikit info lagi ke komentar rinogo, ini adalah cara yang sedikit lebih aman untuk memperbarui panduan: UPDATE wp_posts SET guid = REPLACE (guid, 'post_type = <nama jenis posting lama>', 'post_type = <nama jenis posting baru > ');
David
hanya untuk dicatat, Anda harus memperhatikan nama tabel Anda saat menjalankan multisite
acSlater
6

Hai @erek Perkins:

Secara umum @John P Bloch jawaban tepat tetapi dengan peringatan . Plugin dan bahkan tema khusus dapat dan dapat menyimpan informasi jenis posting dan dengan demikian untuk memastikan bahwa Anda tidak akan merusak data Anda, Anda perlu memastikan plugin dan tema Anda tidak menyimpan jenis posting atau jika mereka melakukannya Anda memperbarui data mereka. demikian juga.

Bisakah Anda memberi tahu kami plugin apa yang Anda gunakan?

MikeSchinkel
sumber
Itu poin yang bagus. Saya sedang membangun custom theme saya, jadi saya pasti harus melalui dan mengubah kode saya. Namun saya tidak memiliki plugin yang menyimpan info jenis posting khusus.
Derek Perkins
Ini poin yang bagus. Saya menggunakan Bidang Kustom Tingkat Lanjut, dan untuk setiap grup bidang yang dilampirkan pada pos itu Anda harus mengatur ulang secara manual ke nama CPT yang baru. Setelah itu bekerja dengan baik.
Chris Rae
4

Jika Anda tidak ingin harus melakukan sendiri query SQL manual ada beberapa plugin yang dapat Anda gunakan:

Saya telah berhasil menggunakan Konversi Jenis Posting untuk mengubah secara massal posting.

Untuk mengonversi posting invididual maka Post Type Switcher adalah pilihan yang lebih baik.

Adam Dempsey
sumber
Terima kasih telah memposting tautan tersebut. Saya baik-baik saja menjalankan query SQL, tetapi itu pasti akan berguna bagi orang lain yang menemukan posting ini.
Derek Perkins
ini tampaknya mengonversi jenis posting, bukan mengubah nama mereka
vladkras