melhores práticas

O que Aprendi em 15 Consultas SQL pra Hackear o WordPress (sem precisar de plugins)!

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.

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

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

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.

O “Segredo” da Qualidade nos Serviços de TI (como ter sucesso usando os erros do mercado de TI)

A história que vou contar pra você hoje foi uma grata surpresa pra mim.
Tenho tido boas surpresas com o mercado baiano apesar da crise e de toda a fama (merecida, diga-se de passagem) de mercado ruim (péssimo!) para profissionais e empresas de TI.
Não vou entrar no mérito das causas dessa realidade, pois até já discutimos algumas questões relacionadas ao mercado baiano neste texto aqui.
Meu objetivo hoje é outro.
Quero mostrar pra você que há sim casos de exceção que demonstram que é sim possível, mesmo diante das adversidades, contra tudo e todos, fazer diferente, fazer a diferença.
Vou explicar como tudo aconteceu…
Estava eu, num dia como qualquer outro, passeando tranquilamente pela minha interminável lista de mensagens não lidas, quando de repente…
Omiti o tema do treinamento de propósito, e você já vai entender porquê.
Foi a primeira vez que uma empresa me contactou para um treinamento.
Em geral sou contactado por empresas para patrocinar o blog através de anúncios, banners, até mesmo para fornecer indicação de profissionais de TI, mas para contratar um treinamento foi a primeira vez (através do blog).
Isso inclusive me despertou para um aspecto que não dava muita atenção até então: divulgação de treinamentos para empresas de TI, e não somente para os profissionais diretamente, que muitas vezes não têm disponibilidade financeira ou não entendem que adquirir um treinamento é um investimento que tem retorno praticamente garantido.
Bom, mas voltando…
Conversei com o dono da empresa, e foi agendada uma reunião com os responsáveis do financeiro e dos profissionais a serem treinados, quando apresentei a proposta e, principalmente, os benefícios do treinamento para a equipe deles e, consequentemente, para a qualidade do serviço da empresa, que se traduziria em melhores resultados para todos: clientes, funcionários da empresa e gestores.
Fico impressionado como ainda encontramos muitos profissionais e empresas que não entendem a importância de se capacitar continuamente, através de eventos, treinamentos formais presenciais ou online, num mercado extremamente dinâmico como o de TI.
Mas não vou divagar…
A conversa com a empresa foi muito boa, e aqui quero registrar a minha felicidade em saber que há organizações baianas com uma mentalidade verdadeiramente focada na qualidade do serviço para o cliente, fazendo investimentos para qualificar suas equipes visando entregar o melhor para o seu cliente e, com isso, crescer e prosperar cada vez mais, ainda que as condições do mercado não sejam as melhores.
Definimos então uma agenda para o treinamento, que foi realizado nas instalações da empresa.
A interação durante a passagem dos conteúdos foi muito boa, e a motivação dos profissionais foi fundamental para permitir, com a participação deles, levar os conteúdos teóricos o mais perto possível da realidade de cada um, usando exemplos das suas atividades de rotina e demonstrando como os conceitos e técnicas aprendidos poderiam ser úteis e aplicáveis para fazer cada vez melhor o trabalho.
Aqui creio que você já deve ter percebido que o treinamento em questão tratava de ITIL, o modelo de Governança de TI que se tornou referência em qualidade na prestação de serviços de TI, e que serviu de base para a instituição das normas ISO 20000.
Chamo a atenção para este ponto, pois penso que o fato de uma empresa buscar esse tipo de treinamento como vantagem competitiva é algo surpreendente num mercado em que a quantidade de empresas com certificações na área de qualidade é bem reduzida, demonstrando que a empresa em questão tem a correta percepção do baixo nível de qualidade de serviço de TI entregue no mercado baiano, aquém do necessário para que se tenham clientes efetivamente satisfeitos, salvo raras exceções.
E aqui faço uma provocação.
É muito comum vermos queixas de profissionais pelos baixos salários pagos pelas empresas, mas é praticamente impossível ver uma discussão no sentido de criar uma empresa que pague bem porque tem diferenciais que permitem, através da qualidade de serviço entregue ao cliente, crescer no mercado e se posicionar de maneira diferenciada.
Como disse no início, esta experiência foi muito surpreendente e gratificante pra mim.
Especialmente porque comecei o treinamento dizendo, como sempre faço…
“O ITIL te torna um profissional melhor, mesmo que você não perceba diretamente, pois o simples fato de ter acesso a este conjunto de conhecimentos sobre qualidade de serviços de TI já transforma a sua maneira de ver o trabalho que realiza”
E terminei o treinamento ouvindo de um dos profissionais…
“Somos profisionais diferentes, melhores. Tenha certeza de que o objetivo foi cumprido, e que estamos muito satisfeitos.”

Conclusão

É fantástico ver a satisfação mútua por um trabalho bem realizado, não é mesmo?
Melhor ainda é saber que, através deste trabalho, você está contribuindo para melhorar a situação do mercado profissional da sua cidade, permitindo a empresas e profissionais enxergarem novas possibilidades além da lamentação.
Agradeço todos os dias por me ter sido dada a oportunidade de fazer a diferença, de pouquinho em pouquinho.
Todos podemos fazer a diferença. Faça você também!
Comece deixando aqui seu relato de experiência, semelhante ou diferente, que possa contribuir para esta discussão tão importante sobre como melhorar a realidade do mercado de TI na Bahia.
Tente incentivar os gestores da empresa em que trabalha a perceberem este “segredo” que não tem nada de secreto: sem capacitação não há qualidade; sem qualidade não há resultado satisfatório, e sem resultado não há sucesso pra ninguém.

O “termo de busca” que mudou minha carreira (e pode mudar a sua também!)

Melhores Práticas para Solução e Prevenção de Problemas
Você chega no trabalho numa segunda-feira “normal”, e antes mesmo que consiga se acomodar, é atropelado por alguém…

O Problema

– Já está sabendo ?
– Sabendo do que ?
– Que está “tudo parado”!
– “Tudo” ?
– Sim, tudo.
Nada como uma descrição vaga de um problema para começar bem o dia, não é mesmo ?

O Diagnóstico

Você investiga e descobre que havia um problema de autenticação com o serviço de diretório, e uma configuração simples (após “longos” minutos pesquisando no site do fabricante) resolve a questão.
Ufa!
Agora posso me acomodar e cuidar do que estava previsto para hoje.
Se a situação acima parece familiar, não é mera coincidência…
Infelizmente, é a realidade de muitos departamentos de TI Brasil (e mundo) afora…
Infelizmente 🙁
Mas onde você quer chegar com isso, Christian ?

Vou te dar uma dica que pode mudar sua forma de pensar a solução de problemas.

Na verdade, esta dica é até mais útil pra prevenir problemas que pra solucioná-los.
Mas que dica é esta, afinal ?

A Solução

A dica pode ser resumida em duas palavrinhas mágicas: “melhores práticas” (ou “best practices”, como prefiro, pelas razões que já cansei de explicar aqui no blog)
Prevenção é sempre melhor que remediação, você certamente sabe disso.
Mas porque é tão difícil colocar isso em prática ?
Por experiência própria, penso que a dificuldade está no fato de que, frequentemente, queremos fazer o “mais rápido” e não “o melhor”.
Isso significa, pegando o exemplo acima, implantar o serviço de diretório com as configurações “padrão”, sem se preocupar com as recomendações de “melhores práticas” do fabricante.
O resultado disso é uma solução implementada de forma rápida, porém arriscada.
Aliás, análise de risco é algo que muitas vezes passa longe da mente quando você está fazendo implementações.
É ou não é ? Seja verdadeiro com sua consciência…
A boa notícia é que a solução para isso existe, e está ao nosso alcance.
Da próxima vez que for implementar qualquer coisa, pesquise sobre as “melhores práticas” relacionadas.
Quase sempre é possível encontrar documentos de melhores práticas para soluções fornecidas pelos mais diversos fabricantes, e abaixo relaciono alguns exemplos:
Melhores Práticas para Windows Server
Melhores Práticas para Linux
Melhores Práticas para VMware vSphere (também em vídeo aulas!)

A Solução (automatizada)

Melhor que uma solução manual, é uma solução automatizada, né não ?
Então…
Alguns fabricantes já fornecem ferramentas para analisar se a implementação está de acordo com as recomendações deles.
Eu recomendo muito que você teste estas ferramentas, e selecionei algumas logo abaixo:
Analisa configurações de performance, segurança, operação e outras, indicando sua conformidade ou não ao que a Microsoft recomenda.
Analisa as configurações do hypervisor ESXi em relação ao guia de segurança da VMware.

Conclusão

Não é incrível como atitudes simples podem trazer ótimos resultados ?
Incorpore o “modo melhores práticas” de pensar à sua rotina de trabalho, e verá como a quantidade de problemas será reduzida no médio e longo prazo.
E não deixe de compartilhar aqui as melhores práticas que te ajudam a fazer melhor o seu trabalho. Fala aí!