Benutzerdefinierte Beitragstypen und Taxonomien umbenennen

31

Ich habe angefangen, eine Site mit über einem Dutzend benutzerdefinierten Beitragstypen zu entwickeln. Ich möchte einige von ihnen umbenennen, nicht nur den Anzeigewert, sondern auch den tatsächlichen Namen des benutzerdefinierten Beitragstyps. Ich mache mir jedoch Sorgen, dass ich durch Ausführen einer SQL-Aktualisierungsabfrage einige Stellen verpasse, an denen ich Dinge ändern oder einen Teil der serialisierten Daten überschreiben muss. Ich habe bereits über 3.000 Elemente eingegeben, daher kann ich nicht einfach mit einer sauberen Datenbank neu starten.

Wie kann ein benutzerdefinierter Beitragstyp am besten umbenannt werden? Wie wäre es, eine Taxonomie umzubenennen?

Derek Perkins
quelle
Eine weitere Frage in diesem Sinne betrifft benutzerdefinierte .htaccess-Umschreibregeln. Wird es eine Menge übrig gebliebener Regeln geben, die meine Datenbank verstopfen? Ich habe die Site noch nicht gestartet, daher muss keiner der alten Links umgeleitet werden.
Derek Perkins

Antworten:

47

SQL-Abfrage zum Umbenennen der Beiträge:

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

SQL-Abfrage zum Umbenennen der Taxonomie:

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

Das sollte sich um alle Datenbankbereiche kümmern. Denken Sie daran, die neuen Namen in dem Code zu verwenden, in dem die Beitragstypen oder Taxonomien registriert sind. Soweit ich weiß, wird dies noch in keinem Plugin behandelt.

John P Bloch
quelle
9
Hervorragende Antwort, genau das, was ich brauchte. Hier ist ein Tipp für den Fall, dass andere das gleiche Problem haben wie ich: Nachdem ich die Abfrage ausgeführt und meinen Code aktualisiert habe, funktionierten die Dinge im Grunde, aber als ich versuchte, die Seite für ein einzelnes Inhaltselement aufzurufen, wurde ein 404-Fehler angezeigt. Ich denke, dass ein Permalink-Cache zurückgesetzt werden musste; Ich ging zu Extras> Permalinks und klickte auf Speichern, dann begannen die Detailseiten zu arbeiten.
Andy Giesler
Als ich das getan habe, habe ich auch das Guid-Feld aktualisiert. Dies könnte dazu beitragen, dass Permalinks, wie von @AndyGiesler erwähnt, nicht mehr neu generiert werden müssen. Fügen Sie einfach Folgendes in Ihre UPDATE-Anweisung ein: guid = REPLACE (guid, '<alter Posttypname>', '<neuer
Posttypname
Um dem Kommentar von rinogo ein wenig mehr Informationen hinzuzufügen, ist dies eine etwas sicherere Möglichkeit, die Guid zu aktualisieren: UPDATE wp_posts SET guid = REPLACE (guid, 'post_type = <Name des alten Posttyps>', 'post_type = <Name des neuen Posttyps) > ');
David
Nur um zu beachten, müssen Sie Ihre Tabellennamen beobachten, wenn Sie auf multisite
acSlater
6

Hallo @Derek Perkins:

Im Allgemeinen ist die Antwort von @John P Bloch genau richtig, aber mit einer Einschränkung . Plugins und sogar benutzerdefinierte Designs können und können Informationen zum Post-Typ speichern. Um sicherzustellen, dass Sie Ihre Daten nicht beschädigen, müssen Sie sicherstellen, dass Ihre Plugins und Designs keine Post-Typen speichern auch.

Können Sie uns sagen, welche Plugins Sie verwenden?

MikeSchinkel
quelle
Das ist ein guter Punkt. Ich erstelle mein eigenes Theme, also muss ich auf jeden Fall meinen Code ändern. Ich habe jedoch keine Plugins, die benutzerdefinierte Post-Typ-Informationen speichern.
Derek Perkins
Das ist ein guter Punkt. Ich habe Erweiterte benutzerdefinierte Felder verwendet und für jede an diesen Beitrag angehängte Feldgruppe muss der neue CPT-Name manuell zurückgesetzt werden. Danach funktioniert es aber gut.
Chris Rae
4

Wenn Sie die SQL-Abfragen nicht selbst manuell durchführen müssen, können Sie einige Plugins verwenden:

Ich habe Post-Typen erfolgreich in Massenänderungs-Posts umgewandelt.

Für die Konvertierung einzelner Posts ist der Post Type Switcher eine bessere Option.

Adam Dempsey
quelle
Vielen Dank für das Posten dieser Links. Ich kann die SQL-Abfragen gut selbst ausführen, aber diese werden auf jeden Fall für andere nützlich sein, die auf diesen Beitrag stoßen.
Derek Perkins
Dies scheint Beitragstypen zu konvertieren, nicht umzubenennen
vladkras