As 10 queries SQL mais úteis para limpar sua base WordPress

Depois de algum tempo sua base SQL do wordpress vai conter alguns dados inúteis, ou seja, lixo. Este artigo traz as 10 melhores queries para limpá-la.

Duas coisas importantes: Sempre faça um backup da sua base antes de qualquer coisa e as queries aqui levam em consideração o prefixo padrão de tabelas wp, ou seja, seus nomes começam com wp_.

Caracteres estranhos

Para não ter que solucionar problemas de charset na mão, utilize estas queries para fazer a troca automaticamente:

UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, '”', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');

UPDATE wp_comments SET comment_content = REPLACE(comment_content, '“', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '”', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '’', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '‘', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '—', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '–', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '•', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '…', '…');

Fechar trackbacks em todos os posts

UPDATE wp_posts SET ping_status = 'closed';

Livrar-se de shortcodes sem uso

Quando você troca seu tema wordpress para outro que não use as mesmas shortcodes, elas começam a aparecer no meio do texto, já que não são tratadas pelo tema atual. Aqui vai uma query para acabar com este problema, usamos a shortcode [tweet] como exemplo.

UPDATE wp_post SET post_content = replace(post_content, '[tweet]', '' ) ;

Excluir posts meta específicos

Útil na mesma situação do item anterior.

DELETE FROM wp_postmeta WHERE meta_key = 'YourMetaKey';

Excluir todas as tags que não são usadas

Há 4 ou 5 anos as tags eram muito populares. Agora muitos autores pararam de se utilizar delas. Se você foi um deles economize um espacinho na sua base de dados fazendo esta pequena limpeza.

DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);

Excluir o cache do feed

O wordpress grava o cache dos feeds na tabela wp_options (sempre levando em consideração que o prefixo da sua instalação é wp_). Se você quer limpar o cache dos feeds basta executar esta query:

DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient%_feed_%')

Excluir todas as revisões dos posts e seus metadados

Revisão de posts é algo bem útil, mas se você não deletar as muitas revisões que se acumulam com o passar do tempo seu banco de dados pode se tornar grande demais. A query abaixo deleta as revisões dos posts (só delete se realmente quiser fazer isso) e os metadados associados à cada revisão.

DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);

Excluir posts antigos em lote (ou seja, deletar no atacado)

Não precisa dos posts publicados há anos? Exclua-os com esta query. Este exemplo deleta qualquer post com mais de 660 dias. Você pode ainda pegar esta query e juntar com a de cima para apagar os posts antigos E seus metadados.

DELETE FROM `wp_posts`
WHERE `post_type` = 'post'
AND DATEDIFF(NOW(), `post_date`) > 600

Remover dados do navegador do usuário

Por padrão, quando alguém faz um comentário no seu blog, o wordpress salva a versão do navegador do usuário na base de dados. Isto pode ser útil para estatísticas, mas na maioria das vezes é inútil. Esta query substitui a versão do navegador do usuário por uma string em branco, reduzindo o tamanho da sua base de dados (pro caso de haver muitos comentários).

UPDATE wp_comments SET comment_agent ='' ;

Desabilitar todos os plugins de uma vez

Algumas vezes, como por exemplo quando você precisa fazer um upgrade no seu blog, você precisa desabilitar todos os plugins. Dependendo de quantos plugins você está usando isto pode ser chato e demorado. Eis uma query SQL útil para desabilitar todos os plugins de uma vez só!

UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';

Mudar o autor em todos os posts

Precisa mudar o autor de muitos posts? Se sim, você não precisa fazer isso manualmente. Aqui tem uma query pra fazer o trabalho por você.

A primeira coisa que você precisa fazer é saber os IDs dos usuários do WordPress. Uma vez logado no phpmyadmin (ou qualquer outro sistema de gerenciamento) execute a seguinte query:

SELECT ID, display_name FROM wp_users;

Agora você tem a lista dos usuários wordpress com seus IDs associados. Vamos dizer que ID_AUTOR_NOVO é o ID do autor “novo” e ID_AUTOR_ANTIGO, como você pode imaginar, o ID do autor antigo.

UPDATE wp_posts SET post_author=ID_AUTOR_NOVO WHERE post_author=ID_AUTOR_ANTIGO;

Assim todos os posts do usuário antigo já estão atribuídos ao autor novo.


Este post é uma livre tradução e adaptação do post em inglês 10+ useful SQL queries to clean up your WordPress database do Cats Who Code. Confira outros posts sobre WordPress aqui no blog e saiba também como migrar seu site de localhost para produção.

Tags:

Comentários

  • Fala Elia!
    Quando vi o título do post pensei que você fosse falar do plugin “Optimize DB” para WordPress, mas me enganei completamente. Essas queries são dicas de ouro! Vou ter que guardar aqui nos favoritos. Com certeza vou precisar um dia!
    []s

  • Humm… Muito interessante.

    Me Ajudou aqui.

    Muito Obrigado!

  • Yuri

    olá; Poderia incluir um comando para EXCLUIR todos os posts de uma certa categoria, já colocando junto os comentários. abraço e sucesso!!