Esta não é uma pergunta sobre como criar um plugin para WordPress. Em vez disso, o que, se houver, guias poderia ser aplicado a como montar a arquitetura de arquivo de qualquer plug-in.
Algumas outras linguagens de programação ou bibliotecas têm maneiras muito controladas de organizar diretórios e arquivos. Às vezes, isso é irritante e destaca a liberdade que o PHP oferece, mas, por outro lado, os plug-ins do WordPress são reunidos de qualquer maneira, conforme determinado pelo autor.
Não há uma resposta certa , mas minha esperança é refinar como eu e outros construímos plug-ins para torná-los mais amigáveis para outros desenvolvedores, mais fáceis de depurar, mais fáceis de depurar, mais fáceis de navegar e possivelmente mais eficientes.
A pergunta final: qual você acha que é a melhor maneira de organizar um plugin?
Abaixo estão algumas estruturas de amostra, mas de maneira alguma é uma lista exaustiva. Sinta-se livre para adicionar suas próprias recomendações.
Estrutura padrão assumida
/wp-content/plugins/my-pluginmy-plugin.php
Método Model View Controller (MVC)
/wp-content/plugins/my-plugin/controllerController.php
/modelModel.php
/viewview.php
my-plugin.php
As três partes do MVC:
- O modelo interage com o banco de dados, consultando e salvando dados, e contém lógica.
- O controlador conteria tags de modelo e funções que a visualização utilizaria.
- A visualização é responsável por exibir os dados fornecidos pelo modelo, conforme construído pelo controlador.
Organizado pelo método de tipo
/wp-content/plugins/my-plugin/adminadmin.php
/assetscss/images/
/classesmy-class.php
/langmy-es_ES.mo
/templatesmy-template.php
/widgetsmy-widget.php
my-plugin.php
WordPress Plugin Boilerplate
Disponível no Github
Com base na API do plug - in , nos padrões de codificação e nos padrões de documentação .
/wp-content/plugins/my-plugin/admin/css/js/partialsmy-plugin-admin.php
/includesmy_plugin_activator.phpmy_plugin_deactivator.phpmy_plugin_i18n.phpmy_plugin_loader.phpmy_plugin.php
/languagesmy_plugin.pot
/public/css/js/partialsmy-plugin-public.php
LICENSE.txtREADME.txtindex.phpmy-plugin.phpuninstall.php
Método fracamente organizado
/wp-content/plugins/my-plugincss/images/js/my-admin.phpmy-class.phpmy-template.phpmy-widget.phpmy-plugin.php
css/, images/e js/seria styles/, images/e scripts/.