Kategorie
Snippet

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

4 odpowiedzi na “WordPress: Jak skasować starsze niż miesiąc wersje wpisów?”

Ś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.

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.

Możliwość komentowania jest wyłączona.