Le fichier functions.php permet de modifier et/ou ajouter des fonctionnalités à WordPress mais si vous changez de thème, vous perdez ces modifications. On pourrait se contenter de copier/coller ces changements dans le nouveau thème, ou on pourrait les transférer dans un plugin afin de les conserver quel que soit le thème.
Faut-il tout transférer ?
La réponse à cette question simple l’est tout aussi : non. Pour savoir ce qu’il faut transférer il faut faire une distinction entre les fonctions qui impactent le contenu et celles qui impactent le design. Celles qui ont un impact sur le contenu ont tout intérêt à être déplacées dans un (ou plusieurs) plugins alors que les autres servent uniquement le design ou layout du site et doivent rester dans le fichier functions.php du thème.
Que faut-il (ou peut-on) transférer ?
Dès l’instant où le fait de ne plus avoir une fonction va poser un problème il serait judicieux qu’elle se retrouve dans le plugin, par exemple :
- Les shortcodes
- Les filtrages de contenu
- Les custom post types
- Les custom taxonomies
- Les ajouts à l’admin de WordPress
Que faut-il conserver dans functions.php ?
Si une fonction n’a qu’un impact visuel, notamment sur le design et la structure du site, dans ce cas il appartient directement au thème et doit par conséquent rester dans functions.php – par exemple :
- Les menus
- Les sidebars
- La pagination
Créer le plugin de fonctionnalités
La création d’un plugin est très simple et si vous savez ajouter des fonctions à functions.php alors vous pouvez créer votre plugin !
Première étape
Créez un repertoire qui porte le nom de votre plugin en n’utilisant que des lettres non accentuées, des chiffres et des tirets. Pour cette article on partira du principe que le nom du plugin est monsite-fonctions.
Dans ce répertoire créez un fichier PHP qui porte exactement le même nom : monsite-fonctions.php.
Deuxième étape
Ajoutez les commentaires en début de fichier qui permettront à WordPress de voir qu’il s’agit bien d’un plugin :
/* Plugin Name: Fonctions de monsite Plugin URI: http://www.monsite.com/ Description: Déplace les fonctionnalités qui impactent le contenu dans un plugin Author: Nom Prénom Version: 0.1 Author URI: http://www.monsite.com/ */
Troisième étape
Il n’y a plus qu’a insérer les fonctions dans ce fichier, puis activer le plugin dans l’administration de WordPress et le tour est joué !
Conclusion
Comme vous l’avez vu il est très simple de créer un plugin rendant les fonctions clés d’un site sous WordPress indépendantes de son thème. Cela peut être également très utile dans le cas où votre client veut pouvoir changer de thème sans pour autant perdre ses fonctions. Vous pouvez également vous constituer une bibliothèque de plugins réutilisables dans d’autres thèmes.
Pour en savoir plus sur la création de plugins, je vous invite à consulter le codex de WordPress (en anglais) : writing a plugin
Happy coding !