Sobre funções e plugins obrigatórios
Eu tenho trabalhado em um pequeno projeto, mais uma aplicação web do que um site, que exigiu o desenvolvimento de um tema personalizado e uma funcionalidade bem acoplada, mas muito específica.
Este é um projeto muito focado (sobre o qual provavelmente falarei em algum momento no futuro), mas ao trabalhar nele, ele me forçou a voltar um pouco ao aspecto de desenvolvimento de temas do desenvolvimento do WordPress.
Não, não estou fazendo nenhum design – felizmente – mas estou tendo que trabalhar em customizações de temas de uma perspectiva funcional. Ao fazer isso, porém, me fez revisitar o necessário functions.php
e algumas considerações que nunca tive antes.
Além disso, isso me fez olhar mais profundamente para o uso mu-plugins
e perguntar quando eles são necessários e por que eu não os usei mais no passado (ou mesmo quando realmente seria necessário usá-los).
Então vou me tornar um pouco poético sobre isso.
TL;DR
Quando eu estava desenvolvendo o tema, functions.php
era usado para duas coisas (o que é problemático por si só), mas ainda assim:
- para ativar ou desativar recursos em temas,
- para definir a funcionalidade específica do tema.
O Theme Developer Handbook diz:
O
functions.php
arquivo é onde você adiciona recursos exclusivos ao seu tema WordPress. Ele pode ser usado para se conectar às principais funções do WordPress para tornar seu tema mais modular, extensível e funcional.Funções do Tema, Manual do Desenvolvedor de Temas
E eu entendo, mas da minha perspectiva e como o WordPress evoluiu, acho que functions.php
deveria ser dedicado à funcionalidade específica do tema em termos de coisas que se conectam diretamente ao núcleo, como:
- funcionalidade do personalizador,
- funcionalidade do menu,
- registro de roteiro e estilo,
- e assim por diante.
Mas se houver algo que precise ser executado durante um dos ganchos e for mais ao longo das linhas da lógica específica do domínio, isso não pertencerá a esse arquivo.
No entanto, isso levanta uma questão: onde reside a funcionalidade específica do domínio?
Insira os plug-ins obrigatórios
Eu sei que ver coisas como inc
diretórios estão se tornando mais comuns, mas não estou preocupado com isso quando falo sobre desenvolvimento de temas, especialmente quando o desenvolvimento de temas não é meu foco e essa estrutura de diretórios específica não é meu estilo.
De qualquer forma, quando se trata de soluções altamente especializadas (onde uma solução é uma combinação de apresentação e funcionalidade fortemente focada), começo a pensar em mu-plugins
.
E a razão pela qual eu não penso em um plugin padrão do WordPress é porque eles geralmente são projetados para funcionar com qualquer tema e adicionar funcionalidades. Não é assim com mu-plugins
.
Plugins obrigatórios (também conhecidos como mu-plugins) são plugins instalados em um diretório especial dentro da pasta de conteúdo e que são ativados automaticamente em todos os sites da instalação.
Plugins obrigatórios, WordPress.org
Então aqui está o meu processo de pensamento:
- Os temas são para apresentação
- Plugins são para funcionalidade.
- Os plug-ins são projetados para serem usados independentemente de um tema e em toda a extensão de um site.
- Os plug-ins obrigatórios são plug-ins ativados e em uso por padrão
- Portanto, a lógica específica do domínio para uma solução especializada deve residir em um plug-in de uso obrigatório.
Claro, pode-se argumentar que alguns temas podem exigir funcionalidades obrigatórias, mas isso ainda não se encaixa com a ideia de que a funcionalidade deve residir em um plug-in obrigatório?
Independentemente disso, a abordagem que tenho seguido é esta:
- A funcionalidade que associa especificamente os recursos do tema ao núcleo do WordPress entra em
functions.php
. - Funcionalidade que é lógica de domínio, mas requer que toda a solução funcione reside em um arquivo
mu-plugin
.
Neste ponto da minha carreira, não faço muito trabalho focado em nada além do back-end, mas nas raras oportunidades que tenho para expandir o trabalho que estou fazendo, acho que ainda estou tentando ser tão analítico e atencioso sobre a forma como estou construindo o projeto.