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…
[blo-link-inner href="http://iworks.pl/2011/01/06/wordpress-usun-zbedne-wersje/"]WordPress: usuń zbędne kopie wpisów[/blo-link-inner]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.
[zip href="http://iworks.pl/wp-content/uploads/2012/iworks_delete_revision_older_than_month.php.zip"]iworks_delete_revision_older_than_month.php[/zip]
Daggerka
Oooo tego mi brakowało! Doskonały kompromis!
Amon
Ś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
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
@Ryszar: Porównywanie wersji wpisu ma sam WordPress.