Como posso excluir chaves órfãs em tabelas de banco de dados do WordPress?

10

Em particular, na tabela wp_options . Depois de quase 2 anos de produção de blog, parece que aumentou muito, e eu não sei quantas porcarias estão lá.

Você conhece um plug-in que funciona com o WordPress 3.0 ou uma consulta segura para executar a pesquisa de chaves / linhas órfãs?

    
por Drake 11.08.2010 / 22:16

4 respostas

7

Não há nenhuma consulta que seja 100% certa para excluir tudo que não for usado e não excluir essas coisas, pois qualquer tema ou plug-in pode adicionar opções à tabela wp_options . Ainda assim, com um pouco de esforço, você pode ter uma boa idéia do que não está em uso e, em seguida, decidir manualmente quais dessas coisas excluir e quais não.

Você pode colocar o código a seguir temporariamente no arquivo functions.php do seu tema e, em seguida, visitar cada página (tipo de) em seu site público e, mais importante, todas as páginas de administração no Admin Console. Uma vez feito isso, você pode abrir sua tabela wp_options e olhar para o campo use_count (adicionado pelo código abaixo) para ver quais opções têm use_count igual a zero (a contagem de uso é basicamente sem sentido qualquer coisa maior que 1 foi lida ou atualizada pelo menos uma vez desde que você adicionou este código.)

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

Com isso, você provavelmente será capaz de identificar opções associadas a plugins antigos, antigos temas e até mesmo opções próprias adicionadas anteriormente, mas que não são mais usadas. Exporte-os todos para um backup (apenas no caso) e, em seguida, exclua os que você está confortável excluindo. Quando estiver pronto, você pode remover o campo use_count (se você quiser, não faz mal se ele estiver lá) e também remover o código acima do seu arquivo functions.php também.

Embora isso ainda não seja perfeito, é muito melhor que nada. Espero que ajude?

    
por MikeSchinkel 12.08.2010 / 06:02
4

O plugin Opções limpas funcionou bem para mim. A descrição do autor do plugin parece se encaixar no que você precisa: "Localiza opções órfãs e permite sua remoção da tabela wp_options."

Ainda não experimentei WP-Optimize , mas também parece promissor. E diz que ele suporta o WP 2.7 (enquanto o Clean Options apenas menciona o suporte definido para o WP 2.3), legal!

    
por Mike Lee 12.08.2010 / 03:19
2

Isso não removerá necessariamente problemas com wp_options , mas usei WP-Optimize para Corrigir um monte de problemas de dimensionamento de banco de dados em meus sites 3.0. Limpa as revisões de postagens desnecessárias, os comentários de spam e pode corrigir automaticamente muitos problemas. No meu blog principal, o DB foi reduzido de 30MB para pouco menos de 6MB e funciona muito mais suavemente agora.

    
por EAMann 11.08.2010 / 22:28
1

Eu corro ambas as opções de limpeza e WP_Optimize no meu site, e o combo faz um ótimo trabalho de manter o banco de dados em grande forma.

    
por Keith S. 13.08.2010 / 18:03