Esta no es una pregunta sobre cómo construir un complemento de WordPress. Por el contrario, qué guías, si las hay, podrían aplicarse a cómo armar la arquitectura de archivos de cualquier complemento.
Algunos otros lenguajes de programación o bibliotecas tienen formas muy controladas de organizar directorios y archivos. A veces esto es molesto y resalta la libertad que ofrece PHP, pero por otro lado, los complementos de WordPress se combinan de cualquier manera según lo determine su autor.
No hay una respuesta correcta , pero mi esperanza es refinar cómo yo, y otros, construimos complementos para hacerlos más amigables para otros desarrolladores, más fáciles de depurar, más fáciles de navegar y posiblemente más eficientes.
La pregunta final: ¿cuál crees que es la mejor manera de organizar un complemento?
A continuación hay algunas estructuras de muestra, pero de ninguna manera hay una lista exhaustiva. Siéntase libre de agregar sus propias recomendaciones.
Estructura predeterminada asumida
/wp-content
/plugins
/my-plugin
my-plugin.php
Método de controlador de vista de modelo (MVC)
/wp-content
/plugins
/my-plugin
/controller
Controller.php
/model
Model.php
/view
view.php
my-plugin.php
Las tres partes de MVC:
- El modelo interactúa con la base de datos, consulta y guarda datos, y contiene lógica.
- El controlador contendría etiquetas de plantilla y funciones que la vista utilizaría.
- La vista es responsable de mostrar los datos proporcionados por el modelo tal como los construyó el controlador.
Organizado por 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
Disponible en Github
Basado en la API de complementos , estándares de codificación y estándares de documentación .
/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 poco 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/
y js/
sería styles/
, images/
y scripts/
.