Rainer Meyer 7. August 2008

Versionierung von Artikeln und Seiten in WordPress 2.6

Kein Beitragsbild

Seit der neuen WordPress 2.6 Version gibt es die Möglichkeit der Versionierung von Beiträgen und Seiten. Dies bedeutet, dass nach jedem Speichern eine neue Version des Artikels oder der Seite als neuer Datenbankeintrag erzeugt wird. Die alte Variante wird erhalten. Man sieht nach mehreren Speichervorgängen dies im Redaktionsmodus unten.

Screenshot

Mehr Einblick bekommt man, wenn man die Datenbank von WordPress mit phpmyadmin öffnet und dort sich die Tabelle wp_post anschaut:

Screenshot

Hier in diesem Beispiel ist nur die Nummer 725 publiziert (post_type=post) während die Nummern 726 und 727 Varianten sind, die früher abgespeichert wurden (post_type=revision). Man kann nun die früheren Varianten wieder aktivieren, wenn man im Redaktionsmodus unten auf eine Version klickt. Dann sieht man folgendes Formular:

Screenshot

Nun kann man die Versionen vergleichen oder eine frühere Version herstellen. Diese neue Möglichkeit in WordPress 2.6 findet nicht jeder gut. Insbesondere weil ja die Datenbank unnötig aufgebläht wird. Es gibt aber eine sehr einfache Möglichkeit diese Versionen-Speicherung dauerhaft abzuschalten: Einfach folgende Zeile in die Konfigurationsdatei wp-config.php (im Hauptverzeichnis des Blogs) hinzunehmen:

define('WP_POST_REVISIONS', false);

um in Zukunft jede Versionierung abzuschalten. Wer eine bestimmte Anzahl von Versionen aber zur Sicherheit beibehalten will, kann dies auch steuern, indem er an der Stelle von false einfach diese Anzahl vorgibt. Bei 2 Versionen sieht das dann so aus:

define('WP_POST_REVISIONS', 2);

Wer sich dauerhaft für das Abschalten entscheidet, der wird sich sicher fragen, wie er denn die überflüssig gewordenen Datenbankeinträge wieder loswird.

Dazu sollte man zunächst mal eine Sicherung der Datenbank durchführen. Denn falls man bei den folgenden Schritten einen Fehler macht, dann könnte die WordPress-Website beschädigt werden. Nach der Sicherung sucht man mit phpmyadmin alle Zeilen in der wp_post-Tabelle und löscht einfach die Zeilen, wo der post_type “revision” ist. Man kann hier auch einen SQL-Befehl verwenden:

DELETE FROM wp_posts WHERE post_type = 'revision';

Wer vollständig auf die Versionierung von Beiträgen verzichten will, hat damit sein Ziel komplett erreicht und sich auch von unnützen Datenbankeinträgen befreit. Wer dies mal von Zeit zu Zeit abändern will oder sich nicht so recht die Eingriffe in die Datenbank oder die PHP-Datei wp-config.php zutraut, der kann auf ein Plugin zurückgreifen.

  • disable-autosave.zip: Plugin um die Autosave-Funktion, das automatische Speichern eines Beitrags oder einer Seite, zu deaktivieren.
  • disable-revisions.zip: Plugin um das Abspeichern von Revisionen bzw. Versionen zu deaktivieren.
  • disable-revisions-and-autosave.zip: Plugin, um Autosave-Funktion und Revisionen zu deaktivieren.

17 Kommentare

  1. Pingback: Steffen Kahl
  2. Seltsam: jetzt habe ich wieder einen neuen Artikel veröffentlicht (ohne zwischendurch etwas an der config-Datei geändert zu haben), und die Zählung ist korrekt nur um einen Zähler gestiegen (auf ID 2446).

    Man muss sich offenbar nur öffentlich über die falsche Zählung beschweren, und schon spurt WP. 😉

    Meine Nachfrage hat sich damit also (hoffentlich!) erledigt.

  3. Danke für den guten Tipp. Die Versionierung hat mich auch gestört und deshalb hab ich die wp-config.php gleich entsprechend geändert. Seltsamerweise hat sich bei mir aber nun folgendes Phänomen ergeben:

    Obwohl ich durch Zufügen der Zeile

    define(‚WP_POST_REVISIONS‘, false);

    die Versionierung abgestellt habe, erhöhte sich die ID danach von Artikel zu Artikel immer um zwei. D.h. meine zuletzt erstellten Artikel haben die IDs 2441, 2443, 2445.

    Unter dem Artikel selbst werden im Edit-Modus auch – wie gewünscht – keine Versionen mehr angezeigt. Aber die IDs steigen eben immer um zwei.

    Hat jemand auch dieses Problem und/oder sogar eine Lösung dafür?

  4. hallo flo,

    wenn Du zwei Versionen (eine angezeigte und eine Sicherheitskopie haben willst, dann einfach

    define(‘WP_POST_REVISIONS’, 2);

    in die wp-config.php schreiben.

    hallo Rene,

    für dich könnte das wohl auch eine Möglichkeit sein.

    schöne Grüße

    Rainer Meyer

  5. So wie ich mich kenne, würde ich das ganze wohl abschalten und mich dann später ärgern, dass ich es getan habe, weil ich einmal einen Fehler mache und es dann die wieder benötigen ^^

    Bisher brauchte ich so etwas noch nicht, aber es gibt sicherlich einige, die es verwenden würden. Sonst würde es die Funktion sicherlich nicht geben ^^

    Gruß
    Wishu

  6. Erzeugt wirklich jedes Speichern eine neue Revision? Praktischer wäre es doch, eine Arbeitsversion zu haben und diese dann irgendwann zu veröffentlichen und damit erst eine neue Revision zu veröffentlichen. So kenne ich es auch von anderen Systemen.

    Sonst produziert man ja wirklich unnötig viele Revisionen, wenn man beispielsweise an irgendetwas öfters rumprobiert wie es denn gut aussieht und es ja jedes Mal speichern muss um das Ergebnis zu sehen…

  7. Danke für den Tipp. Ansich ist die Funktion nicht schlecht, bläht aber wie beschrieben die DB unnötig auf, vor allem wenn man alleiniger Autor ist, benötigt man die Funktion vlt. nicht unbedingt.

  8. Ich würde mich über die Erweiterung der „Minor Changes“ wie bei Wikipedia freuen. Oft genug ändere ich nur einen einzelnen Tippfehler. Dafür dann aber eine komplette Revision zu speichern finde ich eigentlich auch unsinnig und unübersichtlich.

  9. Also ich finde die Versionierung extrem praktisch und bin auch froh drüber, dass WP das jetzt auch kann. Jeder Blogger wird mal über die Versionierung froh sein oder wäre es mal gewesen, hätte es sie schon früher gegeben.

  10. Heißt das, dass man als Besucher die alten Versionen über URLs wie …/725-revision aufrufen kann? (Die ID kann man ja raten.) Die Spalte post_name klingt danach.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.