Rewizje wpisów w WordPress


WordPress ma funkcję zapisującą wpis przed każdą jego edycją tworząc tzw. rewizje, czyli archiwalną wersję. Pozwala to zobaczyć listę zmian pomiędzy edycjami oraz ewentualne powrócenie do starszej wersji.
Rewizje powstają gdy edytujemy wpis. Każda edycja wpisu to kolejna rewizja, która zapisuje się w bazie danych. Jeżeli edytowaliśmy wpis 10 razy, to mamy 10 rewizji, z czego 9 jest kompletnie niepotrzebnych i zalega w bazie danych. Przykładowo, jeżeli wpis ma 100kb to w bazie mamy 900kb zbędnej treści, co powoduje zmniejszenie wydajności bloga. Rewizja powstaje także w wyniku działania funkcji autozapisu podczas pisania / edycji wpisu. Polega ona na okresowym (domyślnie co 1 minutę) i automatycznym zapisywaniu treści, co zapobiega utracie efektów naszej pracy przez różne losowe sytuacje. Ale tutaj różnicą jest to, że auto zapisana wersja jest przechowywana tylko jeden raz, poprzednia wersja jest zastępowana przez nowy auto zapis.

rewizje-wordpress

Wykorzystanie stałej WP_POST_REVISIONS
Najprostszą metodą kontroli rewizji jest określenie WP_POST_REVISIONS w pliku wp-config.php zgodnie ze specyfikacją Revision Management.

Wyłączenie rewizji:

define('WP_POST_REVISIONS',false);

Przechowywanie określonej liczby rewizji:

define('WP_POST_REVISIONS', X);

X – liczba przechowywanych wersji wpisów

Kod dodajemy nad parametrem określającym prefix tabel np.

define('WP_POST_REVISIONS', 2);
$table_prefix = 'wp_';

Efekt działania kodu będzie widoczny tylko dla nowych edycji, więc jeżeli mamy zapisanych już wiele rewizji to musimy usunąć je dodatkowym sposobem.

Usunięcie rewizji wpisów z bazy danych

Sposób 1
Logujemy się do phpMyAdmin i w zakładkę SQL wklejamy zapytanie (jeżeli mamy inny prefix tabel to zmieniamy go na prawidłowy:

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Inną możliwością jest wklejenie kodu do notatnika, zapisanie pliku z rozszerzeniem .sgl i import pliku w phpMuAdmin w karcie Import. Efekt ten sam. Gotowy plik: del_revision.zip

Sposób 2
Wrzucamy na serwer i uruchamiamy plik .php o zawartości:

<?php
define('WP_USE_THEMES', false);
require('wp-load.php');
global $wpdb;
$query = '';
$query .= 'DELETE a,b,c FROM '.$wpdb->posts.' a ';
$query .= 'LEFT JOIN '.$wpdb->term_relationships.' b ON (a.ID = b.object_id) ';
$query .= 'LEFT JOIN '.$wpdb->postmeta.' c ON (a.ID = c.post_id) ';
$query .= 'WHERE a.post_type='revision'';
$wpdb->query($query);

Jeżeli plik nazwiemy del_revision.php to w przeglądarkę wpisujemy adres „strona.pl/delrevision.php”; dodatkowo plik działa z każdym prefixem tabel. Gotowy plik: del_revision.zip

Po usunięciu rewizji musimy jeszcze zoptymalizować tabele z postami >>> wp_posts w celu usunięcia nadmiarowych informacji.

Gotowe wtyczki
Revision Control  do ustalenia liczby przechowywanych wpisów oraz WP-Optimize do usuwania rewizji z bazy danych i jej optymalizacji.

One Comment

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *