Je viens juste de commencer à développer un plugin WP, et je lis du code provenant d'autres plugins pour commencer. J'ai vu quelques plugins qui encapsulent tout ou partie de leurs fonctions dans le code suivant:
if(!function_exists('my_function')) {
function my_function() {
// a cool function
}
}
Est-il considéré comme une bonne pratique d’emballer toutes les fonctions dans ce code pour éviter les conflits de noms avec d’autres plugins?
Merci
Je ne le ferais pas pour éviter les conflits de noms: si un autre plug-in sans lien utilise le même nom, il est peu probable qu'il fournisse les mêmes fonctionnalités et votre plug-in puisse continuer normalement. Là vous voulez échouer tôt, pas sournois plus tard. Ou éviter le conflit avec un meilleur préfixe bien sûr :-)
La seule raison pour cela est de créer une fonction connectable , une fonctionnalité distincte pouvant être implémentée de manière différente par un plugin supplémentaire. Vous pouvez le voir dans le code principal de WordPress: des fonctions telles que wp_mail () sont connectables, vous pouvez donc utiliser un système de messagerie entièrement personnalisé.
Vous le voyez également dans les thèmes susceptibles d’obtenir des thèmes enfants. Les thèmes par défaut, Twemty Eleven et Twenty Ten avant, en sont de bons exemples. Les thèmes enfants peuvent définir des fonctions portant le même nom. Elles seront utilisées à la place.
Personnellement, je n'aime pas trop cette approche pour fournir des hameçons à un autre code. Ils rendent plus difficile de savoir quel code sera appelé (une complétion de code my IDE est confuse). J'essaie de fournir tous les points d'extension via des actions et des filtres "classiques".