Créer une extension pour alléger le functions.php de votre thème

Le fichier functions.php de votre thème WordPress regorge de nombreux bouts de codes utiles pour apporter des fonctionnalités supplémentaires ou des modifications à votre site. Cependant, au fur et à mesure des ajouts, celui-ci s’alourdit, perd en lisibilité, et surtout, est lié au thème que vous utilisez actuellement. Changer de thème n’est pas un évènement rare, que vous utilisez un thème gratuit, premium ou réalisé sur mesure, et il faudra donc toujours penser à copier le contenu de votre functions.php pour conserver les fonctionnalités indispensables au bon fonctionnement du site. Pourquoi donc ne pas s’enlever cette contrainte de l’esprit ?

Pourquoi créer une extension spécifique

Créer une extension pour gérer les fonctionnalités indispensables de votre site à plusieurs avantages :

  • Celles-ci ne sont plus liées au fichier functions.php du thème, elles resteront actives quelque soit le thème utilisé.
  • Elle évite de rendre le site entier inaccessible en cas d’erreurs lors de l’ajout/copie d’un code. WordPress détectera le problème et désactivera l’extension, contrairement au même code dans functions.php qui bloquera le site.
  • Cela permet une séparation claire entre les fonctionnalités spécifiques à un site, et les fonctionnalités spécifiques à un thème.

L’idée est donc intéressante, surtout quand l’on sait que tous les développeurs sont des fainéants : moins on en fait, mieux on se porte. Maintenant, la question légitime à se poser est de se demander quelles sont les fonctions qui appartiennent à une extension spécifique, et quelles sont celles qui appartiennent au functions.php ?

Que mettre dans l’extension, que mettre dans functions.php

Afin de séparer les différentes fonctions utilisées en deux parties, il est nécessaire de penser sur le long terme, et de définir toutes celles qui sont indépendantes de votre thème et de son aspect visuel. Voyons quelques exemples :

  • Tous les custom post types et taxonomies que vous avez créées, et qu’il ne faut supporter pas voir disparaitre si vous changez de thème.
  • Toutes les modifications apportées à l’administration de WordPress : personnalisation, masquage de certaines sections…
  • Tous les shortcodes que vous avez pu mettre en place, et qui ne doivent pas disparaître avec un changement de thème.
  • Activation des images à la une

Ces exemples devraient donc se retrouver dans l’extension que nous allons créer. Que reste-t-il dans le functions.php ? Toutes les fonctions liées à votre thème, à son ergonomie et son design. Là encore, on peut citer :

  • Les menus personnalisés
  • Les sidebars
  • L’activation des images d’arrière-plan, d’en-tête gérées depuis l’administration
  • Les tailles d’images supplémentaires créées avec add_image_size.
  • Les différents styles et scripts intégrés avec wp_enqueue_style et wp_enqueue_script, et destinés au front.

Une fois la séparation effectuée, il ne reste plus qu’à créer l’extension qui va accueillir les fonctionnalités indépendantes. Pas d’inquiétude cela est simple et rapide.

Comment créer une extension pour votre site

La création d’une extension se fait en plusieurs étapes :

  • Créez un nouveau dossier dans le dossier wp-content/plugins/ et donnez lui un nom du type votresite-fonctions.
  • Dans celui-ci, créez un fichier nommé votresite-fonctions.php.
  • Ouvrez le dans votre éditeur de code favori, et commencez par, sans oublier les balises php <?php et ?>
/*
Plugin Name: Mes fonctions spécifiques
Description: Toutes les fonctionnalités indispensables au site.
Version: 0.1
License: GPL
Author: Votre nom
Author URI: l'adresse de votre site
*/

Vous pouvez ensuite y ajouter toutes les fonctions précédemment sélectionnées. Une fois terminé, il ne vous reste plus qu’à activer votre extension dans l’administration de WordPress.

Une bonne idée pour conserver un suivi des différentes modifications est de maintenir en parallèle un fichier readme.txt, où vous reporterez chaque changement, qui s’accompagneront d’un changement de version de l’extension.

Que pensez-vous de cette solution ?

De mon point de vue cette méthode très intéressante, à la fois en terme pratique, d’organisation et de gain de temps. Qu’en pensez-vous ? Allez-vous l’adopter, ou bien utilisez-vous déjà un autre système pour gérer vos fonctionnalités ?

Leave a comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

mattis sit neque. tristique porta. ut