Installer un plugin ou éditer le fichier function.php ?
WordPress est un CMS extensible, il n'y a qu'à avoir le nombre de plugins qui sont disponibles dans le repository officiel pour s'en rendre compte, mais les plugins ne sont pas le seul moyen de customiser WordPress. En effet, on peut soit éditer le fichier function.php de son thème soit utiliser des plugins pour étendre les fonctionnalités de WordPress mais quelle solution choisir et dans quel cas...
L'idée de cet article est né après la lecture récente d'un excellent article du blog WPCandy nommé "How to create your own WordPress functionality plugin". Je ne remet pas en cause ce que l'article dit mais comme je ne partage pas l'ensemble de leur propos et plutôt que de faire un commentaire en anglais sur le blog, j'ai décidé de partager mon avis sur ce blog.
La chasse aux plugins
Ceux qui suivent ce blog depuis le début savent peut être que j'essaye de ne pas avoir trop de plugins installés sur mon installation de WordPress. Il y a plusieurs raisons à cela :
- impact sur les performances (plus de plugins = plus de temps de traitement)
- on ne contrôle pas exactement ce que fais le plugin, chargement de fichiers inutiles
J'ai donc comme principe de ne pas me précipiter sur le repository des plugins, mais plutôt de chercher une solution simple et facile à mettre en place en insérant dans le fichier functions.php du thème un snippet que l'on peut trouver sur un site comme WP-Snippets.
Je suis tout à fait conscient que ce mode de fonctionnement ne peut pas convenir à tout le monde et que beaucoup vont critiquer le fait de ne pas profiter du travail des développeurs et de la simplicité d'utilisation des plugins.
Le fichier function.php n'est pas un fourre-tout
Vous l'aurez peut être compris, je stocke beaucoup de snippets dans mon fichier functions.php qui me permettent de customiser mon installation WordPress selon mes besoins, pourtant ce fichier ne compte pas plus de 30 lignes. D'ailleurs voici le contenu épuré de mon fichier function.php :
<?php
remove_action('init', 'wp_admin_bar_init');
wp_deregister_script('l10n');
include 'functions/tweaks.php';
include 'functions/tweaksAdmin.php';
include 'functions/networks.php';
include 'functions/pagination.php';
include 'functions/commentsTemplate.php';
?>
Vous pouvez voir que c'est très simple comme contenu, le principe est d'utiliser l'inclusion de fichiers en PHP pour que ce ne soit pas le bazar dans le fichier functions.php. En catégorisant correctement les tweaks, je m'y retrouve facilement et il est relativement simple de désactiver un tweak, à la seule condition d'avoir un accès SSH ou FTP aux fichiers (ce qui peut être très contraignant je le reconnais).
Ainsi je me suis créé au fur et à mesure ma petite boite à outils avec des fichiers que j'inclus en fonction de mes besoins et que j'active désactive comme je le ferai avec un plugin.
Conclusion
Je ne suis absolument pas contre l'utilisation des plugins, j'en ai 13 installé sur mon serveur et je suis entrain d'en tester un nouveau pour le SEO. Par contre je prône l'utilisation modérée des plugins pour répondre à un véritable besoin, je trouve qu'il y a beaucoup de plugins qui sont trop simples ou qui n'apportent pas une réelle plus value au fonctionnement de mon blog. Et que du coup, les gens se précipitent sur les plugins pour des petites fonctionnalités...
J'ai donc développé mon propre système à base d'inclusion de fichiers PHP dans le fichier functions.php qui me convient parfaitement mais qui ne sera pas adapté à tous les blogs et à tous les utilisateurs de WordPress car tout le monde ne peut pas facilement rentrer dans du code PHP. Mais généralement, les gens préfèrent les interfaces graphiques, je préfère le code pour gérer le comportement de mon blog. Au niveau de la sécurité, que l'on utilise des plugins ou des fichiers PHP dans functions.php, on est soumis au même risques donc je n'ai pas à m'inquiéter.
Et vous, quel est la manière dont vous gérer les fonctionnalités supplémentaires de votre blog, utilisation massive de plugins ou vous modérez leur utilisation avec l'aide de functions.php ?