it-swarm.dev

Wie kann ich verwaiste Schlüssel in WordPress-Datenbanktabellen löschen?

Insbesondere in Tabelle wp_options. Nach fast 2 Jahren Blog-Produktion scheint es sehr zugenommen zu haben, und ich weiß nicht, wie viel Mist da drin ist.

Kennen Sie ein Plugin, das mit WordPress 3.0 oder Safe Query funktioniert, um verwaiste Schlüssel/Zeilen zu durchsuchen?

10
Drake

Es gibt keine Abfrage, bei der 100% ig sichergestellt ist, dass alle nicht verwendeten Elemente gelöscht werden, da alle Designs oder Plugins der wp_options -Tabelle Optionen hinzufügen können. Mit ein wenig Aufwand können Sie jedoch eine ziemlich gute Vorstellung davon bekommen, was nicht verwendet wird, und dann manuell entscheiden, welches dieser Dinge gelöscht werden soll und welches nicht.

Sie können den folgenden Code vorübergehend in die functions.php -Datei Ihres Themas einfügen und dann alle (Arten von) Seiten auf Ihrer öffentlich zugänglichen Website und vor allem alle Verwaltungsseiten in der Verwaltungskonsole aufrufen. Sobald Sie dies getan haben, können Sie Ihre wp_options-Tabelle öffnen und in dem Feld use_count (hinzugefügt durch den folgenden Code) nachsehen, welche Optionen einen use_count von Null haben (die Verwendungsanzahl ist größtenteils bedeutungslos, anders als alles, was größer als 1 war) mindestens einmal gelesen oder aktualisiert, seitdem Sie diesen Code hinzugefügt haben.)

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'");
}

Auf diese Weise können Sie wahrscheinlich Optionen identifizieren, die mit längst vergangenen Plugins, früheren Designs und sogar eigenen Optionen verknüpft sind, die Sie früh hinzugefügt, aber nicht mehr verwendet haben. Exportieren Sie sie alle in ein Backup (nur für den Fall) und löschen Sie dann diejenigen, die Sie gerne löschen möchten. Sobald Sie fertig sind, können Sie das Feld use_count entfernen (wenn Sie möchten, tut es nicht weh, dass es dort ist) und auch den obigen Code aus Ihrer functions.php-Datei entfernen.

Obwohl dies immer noch nicht perfekt ist, ist es viel besser als nichts. Ich hoffe es hilft?

7
MikeSchinkel

Das Plugin Clean Options hat bei mir gut funktioniert. Die Beschreibung des Autors des Plugins scheint zu Ihren Anforderungen zu passen: "Findet verwaiste Optionen und ermöglicht deren Entfernung aus der Tabelle wp_options."

Ich habe WP-Optimize noch nicht persönlich ausprobiert, aber das sieht auch vielversprechend aus. Und es heißt, es unterstützt WP 2.7 (während Clean Options nur die definitive Unterstützung für WP 2.3 erwähnt), Nice!

4
Mike Lee

Dies wird nicht unbedingt Probleme mit wp_options beseitigen, aber ich habe WP-Optimize verwendet, um viele Datenbankgrößenprobleme auf meinen 3.0-Sites zu beheben. Es löscht nicht benötigte Änderungen an Beiträgen, Spam-Kommentare und kann viele Probleme automatisch beheben. In meinem Hauptblog wurde die DB von 30 MB auf knapp 6 MB reduziert und läuft jetzt viel reibungsloser.

2
EAMann

Ich führe auf meiner Site sowohl Clean Options als auch WP_Optimize aus, und die Kombination leistet einen hervorragenden Beitrag dazu, die Datenbank in hervorragendem Zustand zu halten.

1
Keith S.