WordPress é um conhecido CMS (Content Management System) desenvolvido em PHP. Lançado em 2003, sua concepção inicial era fornecer uma plataforma para blogs. Ao longo dos anos, o ecossistema em volta da plataforma foi crescendo de forma avassaladora e, hoje, nada mais nada menos que 29% da web roda sobre ele, o que representa uma soberba fatia da internet.
Vários temas e plugins com inúmeras finalidades foram sendo criados fazendo com que a plataforma não se limite à apenas blogs. Em contrapartida, nada foi feito em prol para melhorar sua arquitetura. Várias dívidas técnicas foram ascendendo e o descuido com a qualidade de código e falta de critério em aceitar ou não inserções de features na plataforma, tornaram o sistema inchado.
Neste artigo apresento alguns bons motivos para não escolher WordPress como sua plataforma de desenvolvimento:
Padrão de projeto
Não existe padrão de projeto no WordPress. O que existe são milhares de funções e algumas classes distribuídas em centenas de arquivos e uma boa esperança que tudo isso de alguma forma funcione.
Esqueça separação de regras de negócio e apresentação. É tudo junto e misturado! Pensar que um dia seu slogan já foi Code is Poetry é uma piada de mau gosto.
Poderíamos classificar WordPress como Spagheti Code. Ele usa e abusa do Observer Design Pattern. É praticamente tudo orientado a eventos por hooks (actions e filters) espalhados por todo o sistema. Poderíamos resumir, desse jeito, a forma que o WordPress trabalha:
add_action('save_post', 'my_save_post', 10, 3);
function my_save_post($post_ID, $post, $update) {
// regra de negócio
}
Como WordPress não conhece Namespaces, seu papel para entender como um sistema funciona é procurar por todo o diretório de arquivos por determinada action. Pelo menos você fica craque com o comando grep.
Banco de DadosOs dados armazenados no banco é o ativo mais valioso de um projeto. E se seus dados são salvos em uma estrutura desorganizada?
Dados serializados torna a leitura ou busca de valores dificultosas através de consultas triviais:
33 | active_plugins | a:4:{i:0;s:37:"mailchimp-for-wp/mailchimp-for-wp.php";i:1;s:35:"hero-slider/hero-slider.php";i:2;s:25:"wizard/wizard.php";i:3;s:43:"strong-testimonials/strong-testimonials.php";}
Cultura
A base de código do Wordpress nunca foi essas maravilhas. Para dizer a verdade, WordPress criou uma cultura muito ruim entre a comunidade de desenvolvedores, desvalorizando a profissão e manchando a linguagem PHP.
- desenvolvedor marketeiro: profissional que não conhece nada além do WordPress e jura ser um desenvolvedor PHP sênior. Participa de muitos eventos e palestras, afinal, networking é tudo!
- desenvolvedor frontend: como um caminho natural, decide-se aventurar no mundo backend. Corre o risco de escolher a pior plataforma possível para esta nova etapa.
- gerente ou patrão: profissional inserido no dia a dia de TI, possui soft skills e sabe gerir uma empresa ou time, mas não tem tempo de estudar programação. Curte WordPress por ser fácil, além da infinidade de temas e plugins disponíveis.
Inconsistência com nomes e finalidades das funções
Algumas funções são prefixadas com wp_ para evitar colisão com funções nativas do PHP. Outras foram simplesmente nomeadas desse jeito sem um motivo aparente, demonstrando a falta de cuidado dos mantenedores desta plataforma.
// Exibe o retorno automaticamente
the_content();
// Apenas retorna, útil para atribuir a variáveis
$content = get_the_content();
echo get_the_content();
$content = get_the_content();
Globais
WordPress é o rei das funções e variáveis globais. A chance de haver uma colisão de nomenclatura é alta. Isso denota a má arquitetura desta plataforma.
global $wpdb, $post, $blog_id, $site_id, $domain, $path;
URLs absolutas
Podemos dizer que o WordPress tem uma tara por URLs absolutas. Mover o projeto para outro ambiente de desenvolvimento ou trocar o domínio do site, não é uma tarefa simples. Você terá o trabalho irritante de procurar e substituir URLs marretadas pelo nosso querido WordPress por todas as tabelas do seu banco de dados. A melhor maneira é abrir o arquivo SQL e fazer um search and replace.
Multisite
Os problemas com banco de dados no WordPress ainda não acabou. Suponha que você decida usar WordPress como Multisite. Ao criar um novo site, ele simplesmente gera uma série de 10 novas tabelas no banco de dados:
wp_1_commentmeta, wp_1_comments, wp_1_links, wp_1_options, wp_1_postmeta, wp_1_posts, wp_1_term_relationships, wp_1_term_taxonomy, wp_1_termmeta, wp_1_terms
wp_2_commentmeta, wp_2_comments, wp_2_links, wp_2_options, wp_2_postmeta, wp_2_posts, wp_2_term_relationships, wp_2_term_taxonomy, wp_2_termmeta, wp_2_terms
Segurança
Um código que não é bem elaborado ou testado tende a ter mais erros e consequentemente brechas. WordPress é a plataforma preferida entre os hackers.
Sempre argumentarão que ela é a plataforma mais utilizada. Parece que a Microsoft sofre do mesmo problema. Ambos tem uma base de código horrível. Curioso, não?
Conclusão
WordPress pode ser bom para qualquer um, menos para o bom desenvolvedor.
Utilizar WordPress para algo que não seja um simples blog é insanidade. O tempo para desenvolver um projeto e se adequar a forma como ele trabalha é maior que o tempo de criar um sistema a partir de um framework.