Jak ograniczyć liczbę rewizji wpisów w WordPressie i zmniejszyć bazę danych
Każda rewizja wpisu lub strony to osobny wiersz w tabeli wp_posts. WordPress domyślnie zapisuje rewizję przy każdym kliknięciu "Zapisz" oraz co 60 sekund przy autozapisie w edytorze. Przy blogu prowadzonym od kilku lat i częstej edycji tekstów liczba rewizji potrafi kilkukrotnie przewyższyć liczbę samych wpisów. Baza rośnie, kopie zapasowe robią się większe i wolniejsze, a zapytania do bazy (w tym te generujące stronę) mają po prostu więcej danych do przejrzenia. Poniżej pokazuję, jak ograniczyć liczbę nowych rewizji i jak posprzątać te, które już się nazbierały.
- Sprawdź, ile rewizji masz obecnie w bazie. Zaloguj się do phpMyAdmin z panelu hostingowego, wybierz bazę danych swojej strony i wykonaj zapytanie SQL:
SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';(jeśli Twoje tabele mają inny prefiks niżwp_, zamień go na właściwy — sprawdzisz go w plikuwp-config.phpw linii z$table_prefix). - Zrób pełną kopię zapasową bazy danych, zanim cokolwiek zmienisz. W phpMyAdmin to zakładka "Eksport" — wybierz swoją bazę i pobierz plik SQL na dysk. Jeśli hosting oferuje własne narzędzie do backupu w panelu, możesz użyć również go — najważniejsze, żeby kopia istniała, zanim zaczniesz usuwać dane.
- Otwórz plik
wp-config.phpprzez menedżer plików hostingu lub FTP i znajdź linię/* That's all, stop editing! Happy publishing. */. - Nad tą linią dodaj stałą ograniczającą liczbę zapisywanych rewizji na wpis, na przykład:
define('WP_POST_REVISIONS', 5);. Od tego momentu WordPress będzie trzymał maksymalnie 5 ostatnich rewizji dla każdego wpisu, a starsze będzie kasował automatycznie. - W tym samym miejscu w
wp-config.phpdodaj też liniędefine('AUTOSAVE_INTERVAL', 300);— wydłuży to odstęp między automatycznymi zapisami roboczymi z domyślnych 60 sekund do 5 minut. To dodatkowo ograniczy liczbę rewizji tworzonych podczas samego pisania tekstu. - Zapisz plik i wgraj go z powrotem na serwer, nadpisując poprzednią wersję. Wejdź na stronę główną i do panelu wp-admin, żeby upewnić się, że wszystko działa normalnie.
- Wyczyść rewizje, które już zebrały się w bazie przed wprowadzeniem powyższych zmian. Najprostszy sposób to wtyczka do czyszczenia bazy, na przykład WP-Optimize — po instalacji i aktywacji w wp-admin wybierz opcję czyszczenia rewizji i uruchom operację.
- Jeśli masz dostęp do phpMyAdmin i wolisz zrobić to bez wtyczki, możesz usunąć rewizje bezpośrednio zapytaniem SQL:
DELETE FROM wp_posts WHERE post_type = 'revision';. Pamiętaj, że to działanie nieodwracalne — dlatego backup z kroku 2 musi być gotowy, zanim je wykonasz. - Po usunięciu rewizji zoptymalizuj tabelę wp_posts, żeby baza faktycznie odzyskała zwolnione miejsce na dysku. W phpMyAdmin zaznacz tabelę wp_posts na liście tabel, a z menu "Z zaznaczonymi" wybierz "Optymalizuj tabelę".
- Sprawdź efekt, powtarzając zapytanie z kroku 1 — liczba rewizji powinna teraz wynosić zero (lub tylko tyle, ile nazbierało się po wprowadzeniu limitu). Warto też porównać ogólny rozmiar bazy danych w panelu hostingowym przed czyszczeniem i po nim.
Co zrobić, gdy coś pójdzie nie tak
Biały ekran po edycji wp-config.php. Najczęstsza przyczyna to literówka — brakujący średnik na końcu linii albo dodanie stałej po linii "stop editing". Wejdź przez FTP lub menedżer plików, popraw linię albo po prostu usuń dodaną definicję i zapisz plik ponownie. Jeśli strona nadal nie działa, wgraj z powrotem kopię pliku sprzed zmian. Jeśli jej nie masz, odtwórz plik ręcznie na podstawie pliku wzorcowego wp-config-sample.php dołączonego do instalacji WordPressa, wpisując te same dane dostępowe do bazy danych (nazwę bazy, użytkownika, hasło i host), które znajdziesz w panelu hostingowym w sekcji baz danych.
Obawa przed utratą ważnej wersji wpisu. Jeśli w rewizjach masz starszą wersję tekstu, do której zależy Ci na powrocie w przyszłości, przed czyszczeniem otwórz taki wpis w edytorze, wejdź w historię rewizji i ręcznie skopiuj treść tej konkretnej wersji do osobnego pliku tekstowego na dysku. Dopiero potem uruchamiaj czyszczenie bazy — po usunięciu rewizji ta historia znika bezpowrotnie, a backup bazy z kroku 2 pozwoli jedynie cofnąć całą operację, a nie odzyskać pojedynczą wersję.
Brak dostępu do phpMyAdmin. Część tańszych planów hostingowych nie udostępnia phpMyAdmin bezpośrednio klientowi albo ogranicza do niego dostęp. W takiej sytuacji pomiń kroki wymagające SQL i skorzystaj wyłącznie z wtyczki do czyszczenia bazy z poziomu wp-admin — daje ten sam efekt bez potrzeby logowania się do bazy danych. Jeśli zależy Ci akurat na dostępie do phpMyAdmin, sprawdź w panelu hostingowym, czy nie jest on ukryty w zakładce "Bazy danych", albo zapytaj wsparcie techniczne hostingu wprost o taki dostęp.