Ridenominazione di tipi di post personalizzati e tassonomie


31

Ho iniziato a sviluppare un sito con oltre una dozzina di tipi di post personalizzati. Vorrei rinominarne alcuni, non solo il valore visualizzato, ma il nome del tipo di post personalizzato attuale. Sono preoccupato, tuttavia, che eseguendo una query di aggiornamento SQL mi mancheranno alcuni posti in cui devo cambiare le cose o sovrascrivere parte dei dati serializzati. Ho già inserito oltre 3.000 articoli, quindi non posso semplicemente riavviare con un database pulito.

Quale sarebbe il modo migliore per rinominare un tipo di post personalizzato? Che ne dici di rinominare una tassonomia?


Una domanda di follow-up nella stessa ottica riguarda le regole personalizzate di riscrittura .htaccess. Ci saranno molte regole rimanenti che intasano il mio database? Non ho ancora lanciato il sito, quindi non ho bisogno di reindirizzare nessuno dei vecchi link.
Derek Perkins,

Risposte:


47

Query SQL per rinominare i post:

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

Query SQL per la ridenominazione della tassonomia:

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

Ciò dovrebbe occuparsi di tutte le aree del database. Ricorda solo di abbinare i nuovi nomi nel codice in cui sono registrati i tipi di post o le tassonomie. Per quanto ne so, questo non è ancora gestito in nessun plugin.


9
Ottima risposta, esattamente quello di cui avevo bisogno. Ecco un suggerimento nel caso in cui altri abbiano riscontrato lo stesso problema: dopo aver eseguito la query e aggiornato il mio codice, le cose funzionavano sostanzialmente, ma quando ho provato ad andare alla pagina per un singolo elemento di contenuto ho riscontrato un errore 404. Penso che alcune cache del permalink debbano essere ripristinate; Sono andato su Strumenti> Permalink e ho fatto clic su Salva, quindi le pagine dettagliate hanno iniziato a funzionare.
Andy Giesler,

Quando l'ho fatto, ho anche aggiornato il campo guid. Questo potrebbe aiutare a rendere superfluo rigenerare i permalink come menzionato da @AndyGiesler.
Includi quanto segue nell'istruzione

Solo per aggiungere un po 'più di informazioni al commento di Rinogo, questo è un modo un po' più sicuro per aggiornare il guid: UPDATE wp_posts SET guid = REPLACE (guid, 'post_type = <vecchio nome del tipo di post>', 'post_type = <nuovo nome del tipo di post > ');
David,

solo per notare che dovrai guardare i nomi dei tuoi tavoli quando
corri

6

Ciao @Derek Perkins:

In generale la risposta di @John P Bloch è precisa ma con un avvertimento . Plugin e persino temi personalizzati possono e possono archiviare informazioni sul tipo di post e quindi per essere sicuri che non corromperai i tuoi dati devi assicurarti che i plug-in e i temi non memorizzino i tipi di post o se lo fanno aggiornano i loro dati anche.

Puoi dirci quali plugin stai usando?


È un buon punto. Sto costruendo il mio tema personalizzato, quindi dovrò assolutamente passare e cambiare il mio codice in giro. Tuttavia, non ho plug-in che memorizzano informazioni personalizzate sul tipo di post.
Derek Perkins,

Questo è un buon punto. Stavo utilizzando Advanced Custom Fields e per ogni gruppo di campi collegato a quel post devi reimpostarlo manualmente sul nuovo nome CPT. Dopodiché funziona benissimo.
Chris Rae,

4

Se non si desidera eseguire manualmente le query SQL, è possibile utilizzare un paio di plug-in:

Ho usato con successo Converti tipi di post per post di modifica di massa.

Per la conversione di post singoli, l' opzione Cambio tipo di post è un'opzione migliore.


Grazie per aver pubblicato quei link. Sto eseguendo io stesso le query SQL, ma quelle torneranno sicuramente utili per gli altri che si imbattono in questo post.
Derek Perkins,

questo sembra convertire i tipi di post, non rinominarli
vladkras
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.