Come posso eliminare le chiavi orfane nelle tabelle del database di WordPress?


10

In particolare nella tabella wp_options. Dopo quasi 2 anni di produzione di blog sembra aumentato molto e non so quante cazzate ci siano.

Conosci un plugin che funziona con WordPress 3.0 o query sicura da eseguire per cercare chiavi / righe orfane?

Risposte:


7

Non esiste una query che sarà sicura al 100% di eliminare tutto ciò che non viene utilizzato e di non eliminare tali elementi poiché qualsiasi tema o plug-in può aggiungere opzioni alla wp_optionstabella. Tuttavia, con un piccolo sforzo puoi avere una buona idea di cosa non è in uso e quindi decidere manualmente quale di queste cose eliminare e quali no.

Puoi inserire temporaneamente il seguente codice nel functions.phpfile del tuo tema e quindi visitare ogni (tipo di) pagina del tuo sito pubblico e, soprattutto, tutte le pagine di amministrazione nella console di amministrazione. Una volta fatto, puoi aprire la tua wp_optionstabella e guardare il campo use_count(aggiunto dal codice seguente) per vedere quali opzioni hanno un use_countuguale a zero (il conteggio degli usi è per lo più insignificante diverso da qualsiasi cosa maggiore di 1 sia stata letta o aggiornata almeno una volta da quando hai aggiunto questo codice.)

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

Con questo probabilmente sarai in grado di identificare le opzioni associate a plugin ormai lontani, temi precedenti e persino le tue opzioni che hai aggiunto all'inizio ma che non usi più. Esportali tutti in un backup (per ogni evenienza), quindi elimina quelli che ti piace eliminare. Una volta che hai finito puoi rimuovere il use_countcampo (se vuoi, non fa male che sia lì) e anche rimuovere il codice sopra dal tuo functions.phpfile.

Anche se questo non è ancora perfetto, è molto meglio di niente. Spero che sia d'aiuto?


Consiglio vivamente memcached / incr () per questo invece di quantità potenzialmente enormi di scritture di db.
Denis de Bernardy,

3
@Denis - Dato che memcached richiede un'impostazione avanzata del server che non è nemmeno possibile su un server condiviso in cui sono ospitati la maggior parte dei siti WordPress, e poiché si tratta di una routine diagnostica occasionale o occasionale, non vedo perché dovresti sottolineare la necessità per memcached per questo caso d'uso ? Forse mi manca qualcosa, puoi spiegare perché qualcuno che dovrebbe spostarsi su un VPS o su un server dedicato e ottenere informazioni su come ottenere qualcuno per configurare memcached dovrebbe farlo solo per evitare un gran numero di accessi al database per un usato routine di manutenzione?
MikeSchinkel,

4

Il plug-in Opzioni pulite ha funzionato bene per me. La descrizione dell'autore del plug-in sembra adattarsi a ciò di cui hai bisogno: "Trova le opzioni orfane e ne consente la rimozione dalla tabella wp_options".

Non ho ancora provato WP-Optimize personalmente, ma anche quello sembra promettente. E dice che supporta WP 2.7 (mentre Clean Options menziona solo un supporto definito per WP 2.3), bello!


2

Questo non rimuoverà necessariamente i problemi wp_optionsma ho usato WP-Optimize per risolvere molti problemi di dimensionamento del database sui miei siti 3.0. Elimina le revisioni di post non necessarie, i commenti di spam e può risolvere automaticamente molti problemi. Sul mio blog principale, il DB è stato ridotto da 30 MB a poco meno di 6 MB e ora funziona molto più agevolmente.


1

Eseguo sia Clean Options che WP_Optimize sul mio sito e la combinazione fa un ottimo lavoro nel mantenere il database in perfetta forma.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.