WordPress: Jak skasować starsze niż miesiąc wersje wpisów?

Zastanawialiście się może kiedyś jak przyrasta baza danych waszego serwisu opartego o WordPress? Jeżeli nie publikujecie kilku wpisów dziennie, to może nie jest to jakaś niesamowita wielkość ale coś tam się dzieje. Każde zapisanie przygotowywanego wpisu tworzy w bazie danych jego wersję i o ile macie ustawioną stałą WP_POST_REVISIONS na wartość większą od zera, to system nie stworzy więcej niż zdefiniowana wartość i tu mógłbym skończyć moje rozważania. Ale…

zobacz teżWordPress: usuń zbędne kopie wpisów

No właśnie jest jedno ale, najstarszy wpis tutaj pochodzi z 2003 roku i nawet jezeli mój  serwis trzyma tylko 3 ostatnie wersje wpisów, to posiadając kilkaset wpisów oznacza to kilkaset do kilkutysięcy rekordów w bazie w dwóch tabelach. W tabelach posts oraz postmeta (nie zapomnijcie o prefiksie).

Poniższy kod, umieszczony w katalogu wp-content/mu-plugins pozwala na czyszczenie bazy ze starszych niż miesiąc wersji wpisów.

add_action( 'admin_init', 'iworks_delete_older_revisions' );
function iworks_delete_older_revisions()
{
    global $wpdb;
    $query = 'delete from '.$wpdb->posts.' where post_type = \'revision\' and post_date < now() - interval 1 month';
    $wpdb->query( $query );
    $query = 'delete a from '.$wpdb->postmeta.' a left join '.$wpdb->posts.' b on b.ID = a.post_id where b.ID is null';
    $wpdb->query( $query );
}

Uznałem, że miesiąc to dobry czas, po którym można usunąć zalegające wpisy. Oczywiście każdy kto zechce może ten okres zwiększyć. Wystarczy zmienić „interval 1 month” na „interval 3 month”, żeby usuwać wersje starsze niż 3 miesiące.

pobierz plik: iworks_delete_revision_older_than_month.php

Liczba komentarzy: 4

Daggerka - Gravatar

17 stycznia 2012 o godzinie 10:17 Daggerka skomentował:

Oooo tego mi brakowało! Doskonały kompromis!

Amon - Gravatar

19 stycznia 2012 o godzinie 9:37 Amon skomentował:

Świetna porada, szczególnie dla takiego początkującego wordpressowicza jak ja. Z pewnością skorzystam z tej wskazówki. Chociaż chyba zwiększył bym ten okres do usuwania – to jeszcze kwestia do przemyślenia. Dzięki i pozdrawiam.

Ryszard - Gravatar

23 stycznia 2012 o godzinie 0:22 Ryszard skomentował:

Do usuwania starszych wersji wpisów można również użyć plugin do wordpresa Revision Control ze strony http://wordpress.org/extend/plugins/revision-control/ Poza usuwaniem wybranych wersji wpisów i stron ma możliwość porównania zmian pomiędzy wybranymi wpisami. Poza tym można ustawić ilość przechowywanych wersji wpisów. Za pomocą tej wtyczki można również kontrolować ilość wersji dla stron.

Marcin - Gravatar

23 stycznia 2012 o godzinie 15:01 Marcin skomentował:

@Ryszar: Porównywanie wersji wpisu ma sam WordPress.

Dodaj komentarz

Należy wpełnić pola oznaczone znakiem gwiazdki "*". Proszę zapoznać się z zasadami komentowania.