Odpowiedzi:
Nie ma zapytania, które będzie w 100% pewne, aby usunąć wszystko nieużywane i nie usunąć tych rzeczy, ponieważ każdy motyw lub wtyczka może dodawać opcje do wp_options
tabeli. Jednak przy odrobinie wysiłku możesz uzyskać całkiem niezłe pojęcie o tym, co nie jest używane, a następnie ręcznie zdecydować, które z tych elementów należy usunąć, a które nie.
Możesz tymczasowo wstawić następujący kod do functions.php
pliku motywu, a następnie odwiedzić każdą (typ) stronę w witrynie publicznej i, co ważniejsze, wszystkie strony administracyjne w konsoli administracyjnej. Gdy to zrobisz, możesz otworzyć swoją wp_options
tabelę i spojrzeć na pole use_count
(dodane przez poniższy kod), aby zobaczyć, które opcje mają wartość use_count
równą zero (liczba użycia jest w większości bez znaczenia, poza tym, że więcej niż 1 został przeczytany lub zaktualizowany przynajmniej raz, odkąd dodałeś ten kod).
global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
$wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}
add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
if (preg_match('#^option_(.*)$#',$filter)) {
increment_option_use_count(substr($filter,7));
}
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
increment_option_use_count($option);
}
function increment_option_use_count($option) {
global $wpdb;
$wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}
Dzięki temu prawdopodobnie będziesz w stanie zidentyfikować opcje, które są powiązane z dawno minionymi wtyczkami, wcześniejszymi motywami, a nawet własnymi opcjami, które wcześniej dodałeś, ale których już nie używasz. Wyeksportuj je wszystkie do kopii zapasowej (na wszelki wypadek), a następnie usuń te, które chcesz usunąć. Po zakończeniu możesz usunąć use_count
pole (jeśli chcesz, nie szkodzi, aby tam było), a także usunąć powyższy kod z functions.php
pliku.
Chociaż nadal nie jest to idealne, jest o wiele lepsze niż nic. Mam nadzieję, że to pomoże?
Wtyczka Clean Options działa dla mnie dobrze. Opis wtyczki autorstwa autora wydaje się pasować do tego, czego potrzebujesz: „Znajduje osierocone opcje i pozwala na ich usunięcie z tabeli wp_options”.
Nie próbowałem jeszcze WP-Optimize osobiście, ale ta też wygląda obiecująco. I mówi, że obsługuje WP 2.7 (podczas gdy czyste opcje wspominają tylko o konkretnej obsłudze WP 2.3), fajnie!
To niekoniecznie usunie problemy, wp_options
ale użyłem WP-Optimize, aby naprawić wiele problemów z rozmiarami baz danych w moich witrynach 3.0. Usuwa zbędne korekty postów, komentarze do spamu i może automatycznie rozwiązać wiele problemów. Na moim głównym blogu DB został zmniejszony z 30 MB do nieco poniżej 6 MB i działa teraz znacznie płynniej.