Comment créer une API pour mon plugin?
1 réponses
- votes
-
- 2013-05-08
L'API que vousproposez dans unplugin ou unthème dépend de la logique de ce code spécifique. Iln'y aprobablementpas deguide qui s'applique àtoutes les situations.
Je contribue àplusieursplugins avec des API,et ce quej'ai apprisjusqu'àprésentest:
-
Neproposezpas d'APItant que vousne savezpas vraiment comment lesgens utilisent votre code.
Publiez les deux outroispremières versions sans aucune API. Pas d'actions ou defiltrespersonnalisés,pas deméthodes oufonctionspubliques (etjamais de variablesglobales) sipossible. Attendez les demandes de vos utilisateurs,maisn'ajoutezpas le codetant que vousne savezpas que votre structure de codeinternefonctionnera à longterme.
Ilest difficile demaintenir la rétrocompatibilité d'une API . Celapourraitempêcher des améliorationsnécessaires à d'autresendroits. Pensez àtoutes les variablesglobales que WordPressne peutpas supprimer denosjours. C'est unemauvaise API,et nous y sommesbloqués depuis denombreuses années,car lesgens l'utilisent déjà .
-
Pensez à séparer votre API du reste du code (voir le lienprécédentpour uneidée).
Votre API devrait être utilenon seulementpour les développeurstiers,mais aussipour vous. N'ajoutezpas de restrictionpour vous-même si vousn'êtespas obligé. -
Mangez votreproprenourriturepour chien.
Si vousproposez des hookspersonnalisés,utilisez-les dans votre code. Cela donnera à d'autres développeurs desexemples utiles,et vouspourrez voir lesfaillespossibles asseztôt.
Si le cœur de WordPress utilisait la soi-disant API desparamètres en interne,nousn'aurionspas ce désordre aujourd'hui. Peut-être. -
Donnez l'exemple.
Utilisez lesbonnesparties de l'APIprincipale de WordPress dans votreplugin. Évitez les objets anonymes ,les constantes,les variablesglobaleset touttype de codeimprévisible . -
Assurez-vous que vous utilisez un schéma de dénomination cohérent (etnon untel désordre ),et metteztout sous votrepropreespace denoms.
-
Rédigez d'abord la documentation. Publiez unenouvelle (partie d'une) APIplustard.
Créez desexemples utilespourtout. Vous serez étonné de voir lenombre detrouset de redondances que voustrouverez. -
Évitez l'enfer des rappels.
Proposez des outils spécifiquespour déboguer votre API lorsque les chosesne fonctionnentpas commeprévu (y compris les scriptset lesfeuilles de stylenonminifiés) J'ai écrit unexemplepour savoir comment déboguer AJAX ,justepourillustrer à quelpoint vouspouvez être créatifici. Encore unefois,ces outils doivent êtreexpliqués dans votre documentation avant de lespublier. -
Une alternative auparadigme de rappel de WordPresspourrait être le modèle d'observateur . Cela soulèverait labarrièrepour les développeurstiers,mais celapourraitentraîner unmeilleur code des deux côtés.
The API you offer in a plugin or a theme depends on the logic of that specific code. There is probably no guide that applies to all situations.
I am a contributor for multiple plugins with APIs, and what I have learned so far is:
Do not offer an API until you really know how people use your code.
Release the first two or three versions without any API. No custom actions or filters, no public methods or functions (and never any global variables) if possible. Wait for requests from your users, but don’t add the code until you know your inner code structure will work in the long run.
Maintaining backwards compatibility of an API is hard. It might prevent necessary improvements on other places. Think about all the global variables WordPress cannot remove nowadays. That’s a bad API, and we are stuck with it for many years, because people use it already.
Consider separating your API from the rest of the code (see previous link for an idea).
Your API should be useful not only for third party developers, but for you too. Do not add restriction for yourself if you don’t have to.Eat your own dog food.
If you offer custom hooks, use them in your code. This will give other developers useful examples, and you can see possible flaws soon enough.
If the WordPress core would use the so-called Settings API internally, we wouldn’t have this mess today. Maybe.Lead by example.
Use the good parts of the WordPress core API in your plugin. Avoid anonymous objects, constants, global variables and any kind of unpredictable code.Make sure you are using a consistent naming scheme (not such a mess), and put everything under your own namespace.
Write the documentation first. Release a new (part of an) API later.
Create useful examples for everything. You will be amazed to see how many holes and redundancies you will find.Avoid callback hell.
Offer specific tools to debug your API when things don’t work as they should (including not minified scripts and stylesheets). I have written an example for how to debug AJAX, just to illustrate how creative you can be here. Again, these tools should be explained in your documentation before you release them.An alternative to WordPress’ callback paradigma could be the Observer pattern. This would raise the barrier for third-party developers, but it could result in better code on both sides.
-
Vousm'avez donné unguideformidable.Celam'aidera à démarrer dans labonne direction.Quelquespoints auxquelsje n'aijamaispensé.Mercipour cespoints. Je commencerai unenouvelle questionpour leplugin unefois queje commencerai à développer.J'aurai vraimentbesoin de l'aide de vosexperts.Actuellement,je crée un organigramme structurelpour le système.Mercibeaucoupencore. Je choisis votre réponse,maisj'aimerais égalemententendre d'autresexperts.You gave me tremendous guide. It will help me to start-up in right direction. Some points I never thought about. Thanks for those points. I will start new question for the plugin once I start to develop. I will really need great help from you experts. Currently I am creating structural flow-chart for the system. Thanks a lot again.. I am selecting your answer but would like to hear from other experts as well.
- 0
- 2013-05-09
- pixelngrain
J'ai développé despluginspour WordPress,laplupart desplugins quej'ai développés utilisent deux outrois classes,doncpas aussi énormes que Buddypress ou WooCommerce.
Jeprévois de développer deuxplugins open sourcepourfournir une sorte de système complexe (jene peuxpaspartager les détailspour lemomentmaisplustardpendant le développement) où d'autres développeurspeuventpersonnaliser lesfonctionset le systèmepoureux doit être lemême que Buddypresset WooCommerce.
En vérifiant cesfichiers depluginset en réalisant qu'ils ontenregistré leurspropres actionset filtres que les développeurspeuventmodifier selon leursbesoins. Cependant,monproblèmeest dene pas comprendre complètement commentje devrais écrire unplugin où d'autres ont lapossibilité de remplacer lesfonctionset d'ajouter les leurs.
Je sais qu'ilest difficile de donner une réponse définitive,maisj'aibesoin d'une sorte deguide de démarragepourpouvoir aller dans labonne direction. Dois-jeenregistrermespropres actionset filtres? Si oui comment? sinon,quelles sontmes options?
Vos conseilsm'aiderontbeaucoup ... Merci