Özel Yazı Tiplerini ve Taksonomilerini Yeniden Adlandırma


31

Bir düzineden fazla özel yazı tipiyle bir site geliştirmeye başladım. Yalnızca görüntü değerinin değil, gerçek özel gönderi türünün adının da bir kısmını yeniden adlandırmak istiyorum. Ancak, yalnızca bir SQL güncelleme sorgusu çalıştırarak bazı şeyleri değiştirmem veya serileştirilmiş verinin bir kısmının üzerine yazmam gereken yerleri özleyeceğimden endişeleniyorum. Zaten 3.000'den fazla öğe girdim, bu yüzden temiz bir veritabanıyla yeniden başlayamıyorum.

Özel bir yazı türünü yeniden adlandırmanın en iyi yolu nedir? Taksonomiyi yeniden adlandırmaya ne dersiniz?


Aynı damardaki bir takip sorusu özel .htaccess yeniden yazma kuralları ile ilgilidir. Veritabanımı tıkayan birçok artık kural olacak mı? Henüz siteyi başlatmadım, bu yüzden yönlendirilmek için eski bağlantılardan hiçbirine ihtiyacım yok.
Derek Perkins,

Yanıtlar:


47

Gönderileri yeniden adlandırmak için SQL sorgusu:

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

Taksonomiyi yeniden adlandırmak için SQL sorgusu:

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

Bu, tüm veritabanı alanlarıyla ilgilenmelidir. Sadece posta tiplerinin veya taksonomilerin kayıtlı olduğu koddaki yeni isimleri eşleştirmeyi unutmayın. Bildiğim kadarıyla, bu henüz herhangi bir eklentide işlenmiyor.


9
Mükemmel cevap, tam olarak ihtiyacım olanı. İşte başkalarının benim yaptığım gibi aynı problemi vurması durumunda bir ipucu: Sorguyu çalıştırdıktan ve kodumu güncelledikten sonra işler temelde çalışıyordu, ancak bireysel içerik öğesi için sayfaya gitmeye çalıştığımda 404 hatası aldım. Bazı kalıcı bağlantı önbelleğinin sıfırlanması gerektiğini düşünüyorum; Araçlar> Permalinks'e gittim ve Kaydet'e tıkladım, sonra ayrıntılı sayfalar çalışmaya başladı.
Andy Giesler

Bunu yaptığımda, kılavuz alanını da güncelleştirdim. Bu, @AndyGiesler'ın bahsettiği gibi permalinklerin yenilenmesini gereksiz kılabilir. UPDATE deyiminize şunu ekleyin: guid = REPLACE (guid, '<eski yazı türü adı>', '<yeni yazı türü adı>')
rinogo

Sadece rinozo'nun yorumuna biraz daha fazla bilgi eklemek için, bu kılavuzun güncellenmesi için daha güvenli bir yoldur: UPDATE wp_posts SET guid = REPLACE (guid, 'post_type = <eski yazı tipi adı>', 'post_type = <yeni yazı tipi adı) > ');
David,

sadece
multisite ile

6

Merhaba @Derek Perkins:

Genel olarak @John P Bloch'un yanıtı açıktır ancak ihtarı vardır . Eklentiler ve hatta özel temalar gönderi türü bilgilerini saklayabilir ve saklayabilir ve böylece verilerinizi bozmayacağınızdan emin olmak için eklentilerinizin ve temalarınızın gönderi türlerini saklamadığından veya verilerini güncellediklerinden emin olmanız gerekir. yanı sıra.

Hangi eklentileri kullandığınızı bize söyleyebilir misiniz?


İyi bir noktaya değindin. Özel temalarımı oluşturuyorum, bu yüzden kesinlikle gidip kodumu değiştirmek zorunda kalacağım. Ancak, özel yazı tipi bilgisini depolayan eklentilerim yok.
Derek Perkins,

Bu iyi bir nokta. Gelişmiş Özel Alanlar kullanıyordum ve bu gönderiye ekli her alan grubu için onu yeni CPT adına manuel olarak sıfırlamanız gerekir. Ondan sonra olsa iyi çalışıyor.
Chris Rae

4

El ile SQL sorgularını kendiniz gerçekleştirmek istemiyorsanız kullanabileceğiniz birkaç eklenti var:

İletim Türlerini Dönüştür'ü , toplu değişiklik gönderilerinde başarıyla kullandım .

İnvididual post'ları dönüştürmek için Post Type Switcher daha iyi bir seçenektir.


Bu bağlantıları gönderdiğiniz için teşekkür ederiz. SQL sorguları kendim çalıştırarak iyiyim, ancak bu kesinlikle bu yazıyla karşılaşan kişiler için kullanışlı olacak.
Derek Perkins,

Bu, yazı tiplerini yeniden adlandırmak değil dönüştürmek gibi görünüyor
vladkras
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.