Fonctionnalité Plugins vs Thèmes

De nombreux facteurs influent sur les performances de votre site WordPress, et l'un des trucs que les "experts" vous diront souvent est d'éviter les plugins. Ils vous diront qu'il est préférable de placer des fonctionnalités à l'intérieur de votre thème plutôt que d'activer un plugin. Est-ce vrai?


introduction

En ce qui concerne les performances de votre site WordPress, de nombreux facteurs influencent les résultats globaux. Ces facteurs incluent la qualité de l'écriture de votre thème, le nombre d'images et d'autres ressources à charger, la qualité de la mise en cache de votre site, la qualité de vos plugins activés, etc. Deux facteurs, cependant, n'ont aucun impact sur le niveau de performance de votre site: le nombre de plugins (oui, je suis sérieux à 100%) et le fait qu'il existe des fonctionnalités en tant que plugin ou faisant partie de votre thème..

Si vous effectuez une recherche Google rapide pour "comment ajouter un formulaire de contact à WordPress", vous remarquerez probablement une forte tendance en ce qui concerne les titres de didacticiels. La plupart des didacticiels comprendront quelque chose du type"… Sans plugin". Cette tendance, qui existe pour des dizaines de sujets de didacticiels, rappelle que les plugins doivent être mauvais et peuvent même nuire aux performances de votre site. Avoir les mots"sans plugin"Si courant dans les titres de tutoriels, ainsi que dans les messages de forum, beaucoup de gens en sont venus à penser qu'il était préférable, en particulier pour les performances, d'inclure des fonctionnalités dans des thèmes (que ce soit le vôtre ou celui que vous avez acheté) plutôt que de compter sur un plugin pour le fournir.

La première réponse que j’ai à cette croyance répandue est qu’elle est complètement infondée et, en fait, tout à fait incorrecte. La raison pour laquelle cette croyance est erronée tient à plusieurs aspects, et je les passerai en revue point par point. J'aborderai aussi brièvement la conviction selon laquelle moins de plugins sont meilleurs, ce qui est (généralement) tout à fait incorrect également.


Croyances Communes

1. La fonctionnalité est mieux placée dans un thème qu'un plugin

L'idée derrière cette idée est que les plugins sont souvent la source de problèmes sur votre site, soit parce qu'ils sont mal écrits, soit en conflit avec quelque chose de votre thème. Si les plugins sont souvent mauvais, il est donc logique de placer des fonctionnalités (telles que des formulaires de contact) dans le thème, à droite.?

Mauvais, et voici pourquoi:

"Que le code soit chargé au point Y ou au point X, il n’est pas plus efficace."

Premièrement, la seule différence entre le code placé dans un thème et le code placé dans un plug-in est le moment d'exécution. Les plugins actifs sont chargés et exécutés avant le thème actif, mais à part cela, il n'y a aucune différence dans la façon dont le code contenu dans chacun d'eux est exécuté, ni une différence dans l'efficacité du code. Si vous souhaitez un bon diagramme du processus de chargement de base de WordPress, consultez cet article Stack Exchange..

Que le code soit chargé au point Y ou au point X, il n’est pas plus efficace.

Deuxièmement, avec le point 1, nous devons maintenant demander "comment un thème est-il le meilleur endroit pour la fonctionnalité?", étant donné que le code de plugin et le code de thème sont exécutés de la même manière. La réponse est simple. Bien que les thèmes ne présentent aucun avantage par rapport aux plugins, il est apparu que les plugins présentaient quelques avantages significatifs par rapport aux thèmes. Je vais parcourir ces avantages dans un instant.

2. Le code dans les thèmes fonctionne mieux que dans les plugins

Je ne sais vraiment pas d'où cela vient, même si je suppose que cela tient au fait que les gens ont souvent peur des plugins et qu'ils entendent souvent dire qu'ils causent des problèmes de performances sur un site. Le fait est que cette croyance est au mieux ridicule. Comme indiqué ci-dessus, il n'y a aucune différence (sauf pour le timing) dans la façon dont le code du plugin est exécuté, par rapport au code du thème.

Si vous placez une fonction dans un plug-in, exécutez-la, enregistrez le minutage, puis faites la même chose avec la fonction, mais pendant qu'elle est placée dans le thème, vous constaterez qu'il n'y a aucune différence. Ils exécutent tous les deux à la même vitesse et n’ont aucun avantage direct sur l’autre, en termes de performances..

Cela soulève la question suivante: les thèmes sont-ils finalement meilleurs que les plugins pour des fonctionnalités? La réponse courte, non, absolument pas.


Certaines raisons sont meilleures que les plugins

Nous devrions maintenant demander si les plugins sont finalement meilleurs pour les fonctionnalités que les thèmes. La réponse courte, oui, la plupart du temps, c'est vraiment le cas. Mais pourquoi? Bon, il y a quelques raisons.

  1. Séparer votre code en "morceaux" est l’une des meilleures choses à faire pour les projets volumineux, car il facilite beaucoup la maintenance du projet dans son ensemble et le débogage en cas de problème. En plaçant vos fonctionnalités séparées dans leurs propres plug-ins, vous créez efficacement ces "morceaux". Chaque plugin est maintenu séparément, ce qui (comme vous allez le constater) peut rendre infiniment plus facile la recherche de problèmes.
  2. Si quelque chose se brise, vous désactivez simplement le plugin. Supposons que le formulaire de contact de votre site soit intégré à votre thème et qu'il se brise, ce qui entraîne la fermeture du site. Que faire? Si vous ne possédez pas les compétences ou si vous savez comment remplacer le formulaire de contact par un autre qui fonctionne, vous avez de gros problèmes. D'autre part, si la fonctionnalité est fournie par un plugin, vous désactivez simplement le plugin et vous le remettez en ligne une fois le problème résolu, ou vous en trouvez un nouveau..
  3. Si vous souhaitez changer de thème, comme le font la plupart des sites au moins une ou deux fois, vous perdrez toutes les fonctionnalités personnalisées dont vous disposez (y compris les codes abrégés), car le nouveau thème n'aura pas les mêmes fonctions ou sera exécuté. / construit-les différemment. Toutefois, si tous vos codes abrégés sont contenus dans un plug-in, ainsi que des formulaires tels que des formulaires de contact, il vous suffit de télécharger le nouveau thème et de l'activer: tout fonctionnera toujours comme avant. N'est-ce pas là une raison suffisante pour dire que les plugins sont meilleurs pour des fonctionnalités distinctes que pour des thèmes? Je crois que c'est.
  4. Les plugins peuvent être mis à jour et améliorés séparément. Si vous ajoutez des améliorations à un thème, alors tout le thème doit être mis à jour. Combien de fois avez-vous vu un utilisateur d'un thème ajouter des personnalisations au style.css ou functions.php? S'ils l'ont fait, il leur est impossible de mettre à jour le thème et d'obtenir les nouvelles améliorations sans déplacer manuellement toutes leurs modifications. Cela suppose qu’ils n’ont pas créé de thème enfant, ce qu’ils devraient avoir, mais pas beaucoup d’utilisateurs. Lorsque les améliorations sont placées dans un plug-in, l'utilisateur ne doit plus mettre à jour le plug-in à partir de son tableau de bord..

Cela va plus loin que ces quatre raisons, mais il devrait déjà être clair que les plugins ont un énorme avantage sur les thèmes pour des fonctionnalités séparées.

Cela m’amène maintenant à la question de savoir s’il est mauvais d’avoir beaucoup de plugins différents. Vous pouvez probablement imaginer à quelle vitesse le nombre de plugins actifs augmentera si vous placez chaque fonctionnalité majeure dans des plugins séparés. Est-ce que cela cause un problème? Qu'en est-il une fois que vous avez atteint 10 plugins? N'est-ce pas beaucoup? Que diriez-vous de 20 ou 30? N'est-ce pas extrême?

Non.

Au cours de WordCamp Kansas City 2012, j'ai eu l'occasion de discuter avec Otto, l'un des principaux développeurs de WordPress et l'un des hommes de confiance de Matt Mullenweg. Otto s'occupe principalement du développement sur le site personnel de Matt et il m'a dit que des dizaines de petits plug-ins fonctionnels fonctionnaient sur ce site. Chacun des plugins a des tâches spécifiques et ils fonctionnent tous parfaitement côte à côte, même s’ils sont nombreux..

Personnellement, je gère environ 50 plugins sur le site de mes plugins Pippin.

Le fait est que les plugins ne causent pas de problèmes de performances simplement parce qu'ils sont des plugins, même pas avec 100 voire 200 actifs en même temps. Les problèmes de performances des plugins proviennent de ceux qui sont mal écrits, et non du nombre de plugins. Vous pourriez facilement causer plus de problèmes de performances avec un seul plugin mal écrit qu'avec 300 plugins simples et bien écrits.

Les problèmes de performances résultent généralement du chargement des ressources et de l'exécution des requêtes de base de données. Par conséquent, les plug-ins qui en font beaucoup ont généralement un impact sur les performances. Les plug-ins qui n'effectuent pas de requêtes sur la base de données ni de ressources de chargement n'ont aucun impact (ou quasiment nul) sur les performances. C'est pourquoi vous pouvez exécuter 300 plug-ins sur votre site sans impact..

Je sais aussi que WP Candy exécute en tout temps plus de 80 ou 90 plugins actifs..

La clé à retenir est que le nombre de plugins n'a aucun impact sur les performances, seuls la qualité et le type de plugin impactent les performances..

Le deuxième point clé à retenir est que le code dans les plugins fonctionne exactement de la même façon que le code dans les thèmes. Supprimez donc l'idée qu'il est préférable de placer une fonctionnalité dans votre thème plutôt qu'un plugin. Les thèmes sont supposés contrôler les aspects visuels de votre site, pas les fonctionnalités..

Le dernier point à retenir est que les plugins ne sont diaboliques que lorsqu'ils sont mal construits. Les plugins eux-mêmes ne sont jamais mauvais en soi; ils sont seulement mauvais parce que le code qui compose le plugin est mauvais.