Optymalizacja wordpressa
Wordpress to bardzo dobre narzędzie do blogowania, ale czasem może okazać się, że nie do końca spełnia nasze oczekiwania.
Domyślnie WP zapisuje rewizje wpisów czyli za każdym razem gdy coś zmieniamy we wpisie jest tworzona historia zmian, co w prosty sposób w niedługim czasie może prowadzić do urośnięcia bazy danych do dużo większych rozmiarów niż mogłoby się wydawać po ilości opublikowanych wpisów.
Można temu zapobiec instalując odpowiednie wtyczki, ale zanim pomyślałem zacząłem pisać swoją własną.
Pisanie pluginów pod Wp nie jest sprawą trudną Wp posiada własne api dzięki któremu pisanie dodatków jest dużo łatwiejsze.
Samo działanie wtyczki sprowadza się do wykonania dwóch zapytań do bazy danych.
$sql = "Delete FROM ". $wpdb->posts ." WHERE post_type = 'revision'"; $wpdb->query($sql); $sql = "OPTIMIZE TABLE ". $wpdb->posts; $wpdb->query($sql);
Najpierw usuwamy posty, których typ to ‘revision’ a następnie z racji tego że Wp używa tabel typu MYISAM optymalizujemy tabele z postami.
Teraz wystarczy to opakować w odpowiedni kod wykorzystujący api Wp i mamy gotową wtyczkę…
clean(); add_action('admin_menu', array( $this,'menu')); } private function clean() { global $wpdb; $sql = "Delete FROM ". $wpdb->posts ." WHERE post_type = 'revision'"; $wpdb->query($sql); $sql = "OPTIMIZE TABLE ". $wpdb->posts; $wpdb->query($sql); } public function wp_cleaner() { echo ' <div class="wrap">'; echo ' <h2>Wp cleaner</h2> '; echo ' Plugin usuwa z bazy zbędne rewizje postów. '; echo ' <form action="options.php" method="post">'; echo ' <div>'; wp_nonce_field('update-options'); echo 'Czyszczenie zbędnych postów.'; echo ' <input name="action" type="hidden" value="update" />'; echo ' <input name="delete" type="hidden" value="all" />'; echo ' <input class="button-primary" type="submit" value="Czyść" />'; echo '</div> '; echo '</form> '; echo '</div> '; } public function menu() { add_options_page('Wp cleaner', 'Wp cleaner', 8, __FILE__, array($this, 'wp_cleaner')); } } new Wp_cleaner();
W konstruktorze klasy wywołujemy funkcję z api add_action(’admin_menu’, array( $this,’menu’)), która dodaje nam linka (Wp cleaner) w bocznym manu wp, dzięki czemu możemy przejść do stronki plugina.
Metoda wp_cleaner() tworzy nam formularz który jest dodawany do strony opcji funkcją Wp add_options_page(’Wp cleaner’, ‘Wp cleaner’, 8, __FILE__, array($this, ‘wp_cleaner’)), po wysłaniu formularza wywoływana jest metoda clean(), która wykonuje całą pracę.
Wtyczkę instalujemy w standardowy sposób, czyli wrzucamy do katalogu pluginów, włączamy i możemy korzystać.
Oczywiście można ściągnąć gotowe wtyczki z repo wordpressa, które są bardziej dopracowane i mają więcej opcji no i oczywiście są rozwijane (ja nie zamierzam raczej rozwijać swojej, bardziej mi chodziło o napisanie pierwszego plugina do Wp)
np. delete-revision (została niedawno zaktualizowana i posiada już opcję optymalizacji tabeli), czy revision-delete.
Polecam także wtyczkę No revision, której działanie polega na wyłaczeniu opcji zapisywania rewizji w Wordpressie a cały kod wtyczki sprowadza się do jednej linijki:
@remove_action ( ‘pre_post_update’, ‘wp_save_post_revision’ );
Powiązane wpisy:

usówa? nice
Dzięki już poprawiłem, przyznaje demonem ortografii nie jestem mimo to staram się przykładać dużą wagę do poprawności moich tekstów, poza tym miło, że ktoś tak wnikliwie czyta moje teksty