it-swarm-pt.tech

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

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?

10
Drake

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 todas as páginas (do tipo) em seu site público e, mais importante, todas as páginas de administração no console de administração. Uma vez que você tenha feito isso, você pode abrir sua tabela wp_options e olhar 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 é na maior parte diferente de 1 lido ou atualizado 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?

7
MikeSchinkel

O plugin Clean Options 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."

Eu não tentei WP-Optimize ainda pessoalmente, mas esse parece promissor também. E ele diz que suporta WP 2.7 (enquanto Opções Limpas só menciona suporte definitivo para WP 2.3), Nice!

4
Mike Lee

Isso não necessariamente removerá problemas com wp_options, mas usei o WP-Optimize para corrigir muitos problemas de dimensionamento de banco de dados em meus sites 3.0. Limpa revisões posteriores desnecessárias, 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.

2
EAMann

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

1
Keith S.