
Jak usunąć stare wersje WordPress: 4 kroki
Baza WordPress spuchła, panel administracyjny działa wolno, a kopia zapasowa waży tyle co archiwum średniej wielkości witryny? Najprawdopodobniej winne są rewizje, czyli szkice każdego zapisu, które silnik gromadzi latami.
Jedna strona w ciągu swojego życia zbiera dziesiątki poprawek. Proszę pomnożyć to przez setki wpisów, a otrzymają Państwo gigabajty śmieci w wp_posts. Co gorsza: rewizje są przechowywane w tej samej tabeli co opublikowana treść, więc każdy zbędny rekord spowalnia zapytania.
Poniżej cztery sposoby na wyczyszczenie bazy ze starych wersji: od bezpiecznej wtyczki po bezpośrednie zapytanie SQL. Plus dodatkowa sztuczka, która nie pozwoli śmieciom z rewizji powrócić.
💡 Szybki przegląd:
- WP-Sweep, najbezpieczniejsza droga: wtyczka usuwa rewizje standardowymi funkcjami WordPressa, bez bezpośrednich zapytań do bazy.
- wp-config.php, trzy linijki kodu całkowicie wyłączają lub ograniczają zapisywanie szkiców na poziomie silnika.
- Zapytanie SQL, natychmiastowe czyszczenie jednym zapytaniem; wymaga pełnej kopii zapasowej bazy przed uruchomieniem.
- Interwał autozapisu, nie usuwa już nagromadzonych danych, ale radykalnie spowalnia przyrost rewizji w przyszłości.
Krok 1: Usunięcie rewizji wtyczką WP-Sweep
Najprostszy i najbezpieczniejszy sposób dla tych, którzy nie chcą dotykać kodu. WP-Sweep wywołuje standardowe funkcje WordPressa (wp_delete_post_revision), wtyczka nie wysyła surowych zapytań, więc ryzyko uszkodzenia bazy jest minimalne.

Instalacja jest standardowa:
- Proszę przejść do Wtyczki → Dodaj nową.
- Proszę znaleźć WP-Sweep, kliknąć Zainstaluj i Aktywuj.
- Proszę otworzyć Narzędzia → Sweep.
- Proszę znaleźć wiersz Revisions i kliknąć przycisk Sweep.
Wtyczka pokaże, ile rewizji usunięto i ile miejsca zwolniono. Oprócz rewizji WP-Sweep potrafi czyścić komentarze spamowe, szkice autozapisu, nieużywane terminy taksonomii i osierocone pola meta, wszystko przez natywne API WordPressa.
Krok 2: Wyłączenie rewizji przez wp-config.php
Jeśli rewizje nie są w ogóle potrzebne, proszę je wyłączyć jedną linijką. Proszę znaleźć w katalogu głównym witryny plik wp-config.php i dodać kod **przed linią **/* That's all, stop editing! */:
1 define( 'WP_POST_REVISIONS', false );

Po tym WordPress przestanie zapisywać szkice przy każdym autozapisie i kliknięciu „Aktualizuj". W bazie pozostanie tylko ostatnia wersja wpisu.
Proszę zwrócić uwagę: ta linijka nie usuwa już nagromadzonych rewizji, jedynie zapobiega powstawaniu nowych. Istniejące śmieci proszę wyczyścić Krokiem 1 lub dodatkowym zapytaniem SQL poniżej.
Aby ponownie włączyć rewizje, proszę zamienić false na true lub po prostu usunąć tę linię.
Krok 3: Ograniczenie liczby rewizji
Całkowite wyłączenie nie jest dla każdego. Jeśli trzyosobowa redakcja poprawia jeden wpis i potrzebna jest historia zmian, lepiej nie wyłączać rewizji, a ograniczyć ich liczbę.
Proszę dodać w wp-config.php przed linią /* That's all, stop editing! */:
1 define( 'WP_POST_REVISIONS', 3 );
Liczba 3 oznacza: WordPress przechowuje maksymalnie trzy ostatnie wersje każdego wpisu. Czwarta edycja nadpisuje najstarszą, baza nie rozrośnie się.

Dla większości witryn trzech rewizji wystarczy z zapasem. Jeśli publikują Państwo długie long ready z dziesiątkami iteracji, proszę ustawić 5 lub 10. Nie ma ograniczenia, można podać dowolną liczbę całkowitą.
Krok 4: Zmiana interwału autozapisu
Domyślnie WordPress zapisuje szkic co 60 sekund. Przy aktywnej pracy nad wpisem tworzy to dziesiątki rewizji na godzinę. Interwał można wydłużyć, wtedy autozapisów będzie mniej, a baza będzie rosła wolniej.
Proszę dodać w wp-config.php:
1 define( 'AUTOSAVE_INTERVAL', 600 );

Wartość 600 to sekundy (10 minut). Przy takim ustawieniu szkic jest zapisywany w bazie raz na 10 minut zamiast co minutę. Minimum akceptowane przez WordPress to 60 sekund; zalecane maksimum to 3600 (godzina).
Ta sztuczka nie czyści istniejących rewizji, ale radykalnie ogranicza przyrost nowych. Proszę połączyć ją z limitem z Kroku 3, a otrzymają Państwo czystą bazę bez regularnego ręcznego czyszczenia.
Bonus: usuwanie rewizji zapytaniem SQL bezpośrednio
Najszybsza droga, jeśli czyszczenie wtyczką z jakiegoś powodu nie wchodzi w grę. Uwaga: zapytanie jest nieodwracalne. Przed uruchomieniem proszę wykonać pełną kopię zapasową bazy danych przez phpMyAdmin, WP-CLI lub wtyczkę do tworzenia kopii zapasowych.
Najpierw bezpieczny dry-run: proszę sprawdzić, ile rewizji zostanie objętych, bez ich usuwania:
1 SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';
Jeśli prefiks tabel nie jest u Państwa wp_, proszę go zastąpić swoim (proszę sprawdzić w wp-config.php, linia $table_prefix).
Gdy upewnią się Państwo, że liczba jest akceptowalna, proszę wykonać usuwanie:
1 DELETE FROM wp_posts WHERE post_type = 'revision';
Zapytanie usuwa wszystkie rewizje ze wszystkich wpisów za jednym zamachem. Po tym baza natychmiast stanie się lżejsza, szczególnie na starych witrynach z setkami stron.
Czego zapytanie nie rusza: opublikowanych wpisów, szkiców (post_status='draft'), stron, załączników, menu, kosza. Jest ono ściśle wymierzone w rekordy z post_type='revision', silnik używa tego typu tylko do przechowywania wersji.
⁉️🤔 Często zadawane pytania
Czy rewizje na pewno nie wpływają na szybkość witryny?
Wpływają, ale pośrednio. Same rewizje nie ładują się na froncie, leżą w
wp_postsi zwiększają całkowity rozmiar tabeli. Na witrynie z ponad 10 000 rekordów każdy dodatkowy tysiąc wierszy spowalnia zapytaniaWP_Query, szczególnie jeśli nie ma pamięci podręcznej obiektów (Redis). Po wyczyszczeniu rewizji różnica jest zauważalna w panelu administracyjnym i przy zapisywaniu wpisów.
Czy usuwanie rewizji wtyczką jest bezpieczne?
WP-Sweep jest bezpieczny właśnie dlatego, że nie wysyła surowych zapytań SQL. Wywołuje
wp_delete_post_revision(), tę samą funkcję, którą WordPress wywołuje przy standardowym usuwaniu szkicu. Niemniej jednak zasady „zrób kopię zapasową przed każdą operacją na bazie" nikt nie odwołał.
Co stanie się z autozapisami po wyłączeniu rewizji?
Autozapisy będą nadal działać, technicznie są one osobnym mechanizmem. WordPress przechowuje jeden autozapis na wpis (ostatni) i jest on nadpisywany, a nie gromadzony. Wyłączenie rewizji przez
WP_POST_REVISIONSnie wpływa na autozapis. Natomiast zmianaAUTOSAVE_INTERVALbezpośrednio nimi steruje.
Czy można usunąć rewizje tylko dla określonych typów wpisów?
Tak, przez filtr
wp_revisions_to_keep. Proszę dodać wfunctions.phpmotywu lub w Code Snippets:
1 add_filter( 'wp_revisions_to_keep', function( $num, $post ) { 2 if ( 'product' === $post->post_type ) { 3 return 0; // не хранить ревизии товаров WooCommerce 4 } 5 return $num; 6 }, 10, 2 );
Ten kod wyłącza rewizje tylko dla produktów, pozostawiając standardowe zachowanie dla wpisów i stron. Do masowego usuwania już nagromadzonych rewizji konkretnego typu, tylko SQL z warunkiem po
post_parent.
Czy Perfmatters zastępuje WP-Sweep?
Perfmatters, komercyjna wtyczka wydajnościowa, a zarządzanie rewizjami to tam tylko jedna z ponad 40 funkcji. Potrafi ograniczać liczbę rewizji (odpowiednik
WP_POST_REVISIONS) i czyścić je harmonogramem. Ale jeśli potrzebne jest tylko czyszczenie rewizji, WP-Sweep jest całkowicie darmowy i radzi sobie nie gorzej. Perfmatters ma sens, gdy równolegle potrzebne jest leniwe ładowanie, wyłączenie skryptów emoji i inne zaawansowane ustawienia wydajnościowe.
Czy trzeba czyścić rewizje na nowej witrynie?
Na świeżej witrynie z kilkunastoma wpisami rewizje zajmują kilobajty, czyszczenie nie ma sensu. Proszę jednak wyrobić sobie nawyk: jeśli planują Państwo aktywnie prowadzić bloga, proszę ustawić limit
WP_POST_REVISIONSna 3-5 już teraz. Potem nie będzie trzeba rozwiązywać problemu z nawarstwionymi danymi.
Co zastosować do Państwa zadania?
Krótka matryca:
- Chcą Państwo bezpiecznie i szybko, bez kodu → WP-Sweep (Krok 1) + ograniczenie rewizji do 3 (Krok 3).
- Rewizje nie są w ogóle potrzebne, pracują Państwo samodzielnie → proszę wyłączyć przez
WP_POST_REVISIONS, false(Krok 2). - **Baza jest ogromna, wtyczka spowalnia na **hostingu → zapytanie SQL z sekcji bonusowej (bezwzględnie po wykonaniu kopii zapasowej).
- Jest już czysto, chcą Państwo utrzymać porządek → limit rewizji 3-5 (Krok 3) + interwał autozapisu 300-600 sekund (Krok 4).
Proszę poświęcić pięć minut teraz, a baza nie będzie już puchnąć latami. A jeśli po wyczyszczeniu rewizji witryna nadal działa wolno, proszę sprawdzić inne sposoby na przyspieszenie WordPressa: buforowanie zapytań i lekki motyw często dają większy wzrost wydajności niż usuwanie rewizji.



