Comment structurer un plugin
-
02-11-2019 - |
Question
Ce n'est pas une question sur la façon de créer un plugin WordPress. Des guides, le cas échéant, pourraient plutôt être appliqués à la façon de mettre en place l'architecture de fichier de n'importe quel plugin.
Certains autres langages de programmation ou bibliothèques ont des moyens très contrôlés d'organiser des répertoires et des fichiers. Parfois, cela est ennuyeux et met en évidence la liberté offerte par PHP, mais sur les plugins WordPress sur le côté, sont assemblés de manière telle que déterminée par leur auteur.
Il n'y a pas de bonne réponse, mais mon espoir est d'affiner la façon dont moi et d'autres, construisons des plugins pour les rendre plus amicaux pour que d'autres développeurs soient plus faciles à déboguer, plus faciles à naviguer, et peut-être plus efficaces.
La dernière question: Qu'est-ce que tu Pensez-vous que c'est le meilleur moyen d'organiser un plugin?
Vous trouverez ci-dessous quelques structures d'échantillons, mais en aucun cas une liste exhaustive. N'hésitez pas à ajouter vos propres recommandations.
Structure par défaut supposée
/wp-content
/plugins
/my-plugin
my-plugin.php
Méthode du contrôleur de vue du modèle (MVC)
/wp-content
/plugins
/my-plugin
/controller
Controller.php
/model
Model.php
/view
view.php
my-plugin.php
Les trois parties de MVC:
- La maquette interagit avec la base de données, interrogeant et enregistre des données et contient une logique.
- La manette contiendrait des balises et des fonctions de modèle que la vue utiliserait.
- La voir est responsable d'afficher les données fournies par le modèle construites par le contrôleur.
Organisé par méthode de type
/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
Plugin WordPress Plugin Play
Disponible sur Github
Basé sur API du plugin, Normes de codage, et Normes de documentation.
/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éthode librement organisée
/wp-content
/plugins
/my-plugin
css/
images/
js/
my-admin.php
my-class.php
my-template.php
my-widget.php
my-plugin.php
Pas de solution correcte