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-pluginmy-plugin.php
Método de controlador de vista de modelo (MVC)
/wp-content/plugins/my-plugin/controllerController.php
/modelModel.php
/viewview.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/adminadmin.php
/assetscss/images/
/classesmy-class.php
/langmy-es_ES.mo
/templatesmy-template.php
/widgetsmy-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/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 poco organizado
/wp-content/plugins/my-plugincss/images/js/my-admin.phpmy-class.phpmy-template.phpmy-widget.phpmy-plugin.php
css/, images/y js/sería styles/, images/y scripts/.