Wordpress

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.

Saiba mais...  Google melhora mecanismo de buscas com "Caffeine"

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'”.

Saiba mais...  #FISL14: Antecipar oportunidades e gerar melhores resultados com Big Data Analysis

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’;

9. Identificar tags não usadas

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

Saiba mais...  Conficker infecta equipamento de ressonância em hospitais

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.