Como vocĂȘ obviamente sabe, eu tenho um blog đ
Na busca por otimizar o blog, no final do ano passado, finalmente consegui migrar da plataforma da Google (Blogger) pro WordPress, algo que levei anos pra realizar e que hoje lamento não ter feito antes. Simplesmente não hå comparação em termos de funcionalidade, facilidades, recursos, enfim.
Não é à toa que a plataforma domina nada menos que um terço da Internet!
Uma das coisas mais legais, senĂŁo a mais legal, do WordPress, sĂŁo os plugins.
Eles permitem fazer coisas incrĂveis com seu site, de templates para textos a melhorias de segurança pro site, de otimização de imagens a compactação de pĂĄginas para acelerar o desempenho, de exibição automĂĄtica de propagandas a sugestĂ”es de textos relacionados, tudo isso e muito mais Ă© possĂvel fazer com esses pedacinhos mĂĄgicos de cĂłdigo.
Isso Ă© uma mĂŁo na roda muito, mas muito Ăștil mesmo, especialmente para empreendedores que nĂŁo dispĂ”em de recursos financeiros para delegar a profissionais especializados a manutenção do site ou blog.
E Ă© este o ponto que quero explorar neste texto.
Mas, antes, deixe eu apresentar a vocĂȘs os 27 âhacksâ pro WordPress que descobri meio sem querer, enquanto pesquisava plugins pra tratar questĂ”es especĂficas deste blog.
WordPress e LAMP
A combinação do WordPress com a famosa sigla LAMP (Linux, Apache, MySQL e PHP) é uma opção muito interessante e facilmente encontrada em qualquer provedor de serviços de hospedagem de sites que se preze.
Por isso mesmo, vale a pena conhecer um pouco melhor algumas das informaçÔes disponĂveis no banco de dados do WordPress, pois elas podem ser muito Ășteis em algumas situaçÔes.
Pra citar somente dois exemplos: 1) vocĂȘ pode nĂŁo querer instalar muitos plugins no seu site por razĂ”es de desempenho e segurança, e neste caso algumas operaçÔes que um plugin facilitaria podem ser realizadas diretamente no banco, como vou exemplificar mais adiante; 2) vocĂȘ pode nĂŁo encontrar um plugin que faça exatamente o que precisa, e neste caso a solução pode estar na execução de um script SQL diretamente no banco de dados do WordPress. Embora seja uma operação de risco, com os devidos cuidados (e, principalmente, um backup recente Ă mĂŁo đ Ă© possĂvel resolver mesmo as situaçÔes mais complicadas.
Explorando o banco de dados MySQL do WordPress
VocĂȘ pode começar sua aventura pelo banco de dados do WordPress com uma simples consulta.
connect wordpress;
SELECT * from wp_options limit 10;
Observe que incluĂ a opção âlimit 10â. Isto porque, neste blog, a consulta sem esta clĂĄusula resultou em uma listinha de ~5500 registros.
Para o objetivo didĂĄtico deste texto, as primeiras 10 linhas jĂĄ sĂŁo suficientes para revelar informaçÔes importantes sobre o site como nome, URL, contato do administrador e descrição. Esta tabelinha pode ser muito Ăștil em situaçÔes de migração, por exemplo, em que pode ser necessĂĄrio mudar a URL do site.
Agora que vocĂȘ jĂĄ se familiarizou um pouco com o banco de dados do WordPress, vamos aos hacks propriamente ditos!
1 â Mudar a URL do site
Hoje em dia nĂŁo faltam motivos para ter um site, e por isso mesmo hĂĄ pessoas que vivem de registrar domĂnios pra vender depois. Em outros casos, nomes ofensivos ou relacionados a marcas podem ser obrigados a mudar por decisĂ”es judiciais.
Por isso Ă© importante saber o que fazer caso seja necessĂĄrio mudar a URL do seu site. Vai queâŠ
UPDATE wp_options SET option_value = replace(option_value, âhttp://www.enderecoantigo.comâ, âhttp://www.endereconovo.comâ) WHERE option_name = âhomeâ OR option_name = âsiteurlâ;
2. Atualizar o GUID (Globally Unique Identifier)
Além de atualizar as opçÔes relativas à URL propriamente dita, pode ser necessårio atualizar o GUID também.
UPDATE wp_posts SET guid = REPLACE (guid, âhttp://www.enderecoantigo.comâ, âhttp://www.endereconovo.comâ);
3. Atualizar URL nos conteĂșdos
Ainda tratando de mudança de URL, vocĂȘ pode alterar as referĂȘncias ao endereço anterior em todo o conteĂșdo do site.
UPDATE wp_posts SET post_content = REPLACE (post_content, âhttp://www.enderecoantigo.comâ, âhttp://www.endereconovo.comâ);
4. Alterar o caminho das imagens
A utilização de Content Delivery Networks (CDN) é cada vez mais comum para distribuir melhor as informaçÔes de forma que estejam mais próximas dos usuårios, melhorando o desempeno no acesso ao site.
Assim, o script abaixo permite ajustar o caminho das imagens para que apontem para o endereço do CDN ao invés do endereço do site.
UPDATE wp_posts SET post_content = REPLACE (post_content, âsrc=âhttp://www.enderecoantigo.comâ, âsrc=âhttp://cdn.endereconovo.comâ);
UPDATE wp_posts SET guid = REPLACE (guid, âhttp://www.enderecoantigo.comâ, âhttp://cdn.enderecoantigo.comâ) WHERE post_type = âattachmentâ;
5. Adicionar um campo aos posts
Ă possĂvel acrescentar campos aos posts do WordPress para qualquer uso que deseje, como colocar uma observação sobre o conteĂșdo, por exemplo.
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, âUniversalCustomFieldâ
AS meta_key âMeuCampoPersonalizadoâ AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = âUniversalCustomFieldâ)
â AND post_type = âpostâ;
Para fazer o mesmo com as pĂĄginas, basta alterar o filtro âpost_type = âpost'â para âpost_type = âpage'â.
6. Encontrar todos os posts com um certo campo
Depois de criar o novo campo, vocĂȘ pode localizar todos os posts que o contĂ©m.
SELECT wp_posts.ID, wp_postmeta.meta_key
FROM wp_posts
JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = âFIELD_NAMEâ
WHERE wp_posts.post_type = âpostâ
order by wp_posts.ID asc
7. Apatar post meta
Plugins podem deixar lixo no seu site. Este script ajuda a limpar a bagunça. Basta identificar o campo âmetaâ que o plugin criou e removĂȘ-lo.
DELETE FROM wp_postmeta WHERE meta_key = âLixoMetadoPluginâ;
8. Alterar o usuĂĄrio padrĂŁo admin
Embora este tipo de medida não seja tão eficaz como muitos pensam, pois aplica a segurança por obscuridade, renomear o usuårio admin pode ser uma medida interessante pra, ao menos, reduzir os ataques dos chamados script kiddies.
UPDATE wp_users SET user_login = âAwesome Bossâ WHERE user_login = âAdminâ;
Se vocĂȘ resolve apagar posts antigos ou mudar as tags associadas, pode ser que fiquem algumas tags âĂłrfĂŁsâ no banco de dados do WordPress.
Para identificĂĄ-las use a consulta abaixo.
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy=âpost_tagâ AND wtt.count=0;
10. Apagando SPAM
Este foi um dos comandos mais Ășteis pra mim atĂ© agora, pois o blog estĂĄ sofrendo um âmini-ataque de SPAMâ nos comentĂĄrios, e apagar todos os comentĂĄrios na unha Ă© completamente inviĂĄvel.
DELETE FROM wp_comments WHERE wp_comments.comment_approved = âspamâ;
Na verdade a operação acima apaga os comentårios marcados como SPAM. Para verificar os comentårios que são SPAM mas ainda não foram marcados como SPAM, é necessårio verificar os comentårios pendentes, através dessa consulta:
SELECT * FROM wp_comments WHERE comment_approved <> 1;
11. Resetar senha
Essa Ă© clĂĄssica, hein? #quemnunca
Quando precisar redefinir a senha de algum usuĂĄrio, o comando SQL abaixo vai ser muito, muito
UPDATE wp_users SET user_pass = MD5( ânova_senhaâ ) WHERE user_login = âlogindousuarioâ;
12. Reatribuir artigos
Caso o site tenha vĂĄrios colaboradores e um deles saia, Ă© possĂvel transferir para outro autor os textos. Pelo menos em termos de banco de dados đ
UPDATE wp_posts SET post_author = âid-novo-autorâ WHERE post_author = âid-autor-antigoâ;
13. Apagar revisÔes
Eu costumo editar os posts vårias vezes até chegar a uma versão final e publicar.
Nestes casos, as revisÔes podem ocupar um espaço precioso.
NĂŁo mais đ
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = ârevisionâ
14. Apagar comentĂĄrios nĂŁo aprovados
JĂĄ mostrei como listar os comentĂĄrios pendentes, nĂŁo aprovados. Com a operação abaixo, Ă© possĂvel apagĂĄ-los.
DELETE FROM wp_comments WHERE comment_approved = 0
15. Desativar comentĂĄrios em posts antigos
Aqui outra dica muito valiosa. Pra reduzir o SPAM nos comentĂĄrios, tive que bloquear este recurso para alguns dos posts mais vizualizados do blog.
UPDATE wp_posts SET comment_status = âclosedâ WHERE post_date < â2016-03-11â AND post_status = âpublishâ;
ConclusĂŁo
O que quero chamar a atenção sobre esse texto Ă© algo que muitas vezes vejo profissionais de TI, atĂ© experientes, procurando âas mesmas facilidadesâ que um usuĂĄrio final.
Muitas vezes isso simplesmente nĂŁo faz sentido.
Fazendo uma analogia com estes âhacksâ do WordPress, Ă© muito mais produtivo para um profissional de TI usar o conhecimento a mais que possui para criar um plugin que nĂŁo exista, ou automatizar tarefas atravĂ©s de SQL e outros recursos disponĂveis, do que se limitar apenas aos plugins disponĂveis e o que seus desenvolvedores estĂŁo dispostos a oferecer.
Me vi obrigado a adotar uma postura mais âscript friendlyâ e atĂ© voltei a programar depois que passei a estudar CiĂȘncia de Dados e DevOps, e os primeiros resultados jĂĄ sĂŁo bem interessantes. Num outro texto pretendo falar sobre eles.
