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-plugin
my-plugin.php
Método Model View Controller (MVC)
/wp-content
/plugins
/my-plugin
/controller
Controller.php
/model
Model.php
/view
view.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
/admin
admin.php
/assets
css/
images/
/classes
my-class.php
/lang
my-es_ES.mo
/templates
my-template.php
/widgets
my-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
/partials
my-plugin-admin.php
/includes
my_plugin_activator.php
my_plugin_deactivator.php
my_plugin_i18n.php
my_plugin_loader.php
my_plugin.php
/languages
my_plugin.pot
/public
/css
/js
/partials
my-plugin-public.php
LICENSE.txt
README.txt
index.php
my-plugin.php
uninstall.php
Método fracamente organizado
/wp-content
/plugins
/my-plugin
css/
images/
js/
my-admin.php
my-class.php
my-template.php
my-widget.php
my-plugin.php
css/
, images/
e js/
seria styles/
, images/
e scripts/
.