Zarządzanie rewizjami i automatycznym zapisem w WordPress

Autosave i rewizje to różne rzeczy:

  • autosave to tymczasowa wersja co kilka sekund (jedna kopia na użytkownika).
  • rewizje to trwałe kopie zapisane ręcznie lub automatycznie, rewizje są przechowywane w tabeli wp_posts z typem revision.

Zbyt wiele rewizji (np. setki na jeden wpis) może obciążać bazę danych – warto ustawić limit (np. 3 lub 5)

WP_POST_REVISIONS

Stała WP_POST_REVISIONS steruje liczbą rewizji, które WordPress przechowuje w bazie danych dla każdego posta/strony/CPT.

Możliwe wartości i ich działanie:

  1. define(’WP_POST_REVISIONS’, true); (domyślnie)
    • włączone bez limitu: WordPress tworzy nieskończoną liczbę rewizji,
    • każda edycja dodaje nową wersję do bazy danych,
  2. define(’WP_POST_REVISIONS’, 5); (lub inna liczba)
    • WordPress przechowuje maksymalnie 5 ostatnich rewizji dla danego wpisu,
    • starsze są automatycznie usuwane,
    • pomaga to zmniejszyć rozmiar bazy danych,
    • jest bezpiecznym kompromisem między użytecznością a optymalizacją,
  3. define(’WP_POST_REVISIONS’, false);
    • rewizje są całkowicie wyłączone,
    • uwaga: nadal działa autosave (tymczasowy zapis roboczy), ale nie zapisują się żadne trwałe rewizje,

AUTOSAVE_INTERVAL

Stała AUTOSAVE_INTERVAL w WordPressie określa, co ile sekund WordPress wykonuje automatyczny zapis szkicu (wersji roboczej) podczas edycji wpisu lub strony w panelu administracyjnym.
Przydatne informacje:

  • domyślnie co minutę WordPress wysyła dane formularza i zapisuje tymczasową wersję wpisu w bazie danych,
  • przechowywane są w bazie danych wp_posts z typem revision i statusem auto-draft,
  • możesz zarządzać czasem po jakim dokonuje się autosave, jeśli chcesz zmniejszyć liczbę zapytań AJAX do serwera lub rzadziej zapisywać zmiany tymczasowe
  • uwaga: jeśli ustawisz zbyt długi interwał (np. 900 sekund = 15 minut), to w razie awarii przeglądarki możesz stracić więcej pracy

Ustawienie

1. Standardowo w pliku wp-config.php
który znajduje się w głównym katalogu instalacji WordPressa, tam gdzie katalog wp-admin, wp-content.
Wstaw ten kod przed linią /* That’s all, stop editing! Happy publishing. */

define('AUTOSAVE_INTERVAL', 300); // seconds, every 5 minutes
define('WP_POST_REVISIONS', 5);

2. środowisko oparte na Dockerze
2.1 Własny wp-config.custom.php + require
W katalogu głównym WordPressa (tym samym, co wp-config.php) utwórz plik wp-config.custom.php, w nim zamieść kod php:

define('AUTOSAVE_INTERVAL', 300); // seconds, every 5 minutes
define('WP_POST_REVISIONS', 5);

W pliku wp-config.php dodaj require_once, przed linią /* That’s all, stop editing! Happy publishing. */ wstaw:

if (file_exists(__DIR__ . '/wp-config.custom.php')) {
    require_once __DIR__ . '/wp-config.custom.php';
}

2.2 Zmienna środowiskowa + wp-config.php
W pliku docker-compose.yml wstawiasz kod:

environment:
  - AUTOSAVE_INTERVAL=300
  - WP_POST_REVISIONS=5

i w pliku wp-config.php, przed linią /* That’s all, stop editing! Happy publishing. */ wstawiasz:

define('AUTOSAVE_INTERVAL', getenv('AUTOSAVE_INTERVAL') ?: 60);
define('WP_POST_REVISIONS', getenv('WP_POST_REVISIONS') ?: true);

Dzięki temu możesz konfigurować zachowanie WordPressa bez modyfikowania plików w kontenerze.

Hope this helps and happy coding :)

Zobacz jeszcze

query vars

query variables functions.php: add_filter('query_vars', 'wsQueryVars'); function wsQueryVars($vars) { $vars = 'webDesign'; //register new query vars $vars = 'webCoding';...

technologie, narzędzia przydatne dla web developera

technologie internetowe CSS3 XHTML/HTML5 API dla HTML API REST/SOAP LESS SASS Responsive Web Design Bootstrap PHP MySQL, NoSQL databases JavaScript JS...