Comment modifier le fichier functions.php d’un thème WordPress ?


Si vous avez déjà eu envie de personnaliser un thème WordPress ou d’ajouter de nouvelles fonctionnalités à votre blog, vous avez peut-être déjà lu que vous deviez modifier le fichier functions.php. On peut y ajouter toutes sortes de morceaux de code pour étendre les possibilités offertes par WordPress.

Mais comment modifier le fichier functions.php sans casser son blog ? Et comment résoudre les problèmes si vous obtenez une page blanche après avoir personnalisé ce fichier ? Voici des conseils !

Modifier le fichier functions.php de son thème WordPress : conseils et bonnes pratiques
Modifier le fichier functions.php de son thème WordPress : conseils et bonnes pratiques

A quoi sert le fichier functions.php ?

De la même manière qu’un plugin WordPress, ce fichier permet de modifier le comportement de votre blog : ajouter une fonctionnalité, modifier le fonctionnement par défaut de WordPress, etc.

Sur No Tuxedo, le fichier functions.php me permet par exemple de…

  • Ouvrir automatiquement les liens figurant dans les commentaires du blog dans une nouvelle fenêtre.
  • Personnaliser le fil d’Ariane que j’affiche sur les pages.
  • Optimiser la vitesse du blog en contrôlant l’ordre de chargement des scripts et des feuilles de style, en différant l’analyse du code Javascript.
  • Créer des zones de widgets personnalisées à l’endroit où j’en ai besoin dans mon thème.
  • Ajouter des images dans mon flux RSS.
  • Personnaliser l’apparence de mes pages au format AMP pour les mobiles.

Modifier le fichier functions.php : deux méthodes

Pour modifier le fichier functions.php,vous pouvez soit passer par l’interface de WordPress, soit passer par le FTP où vous avez installé les fichiers de votre blog. Par expérience, je trouve que la modification d’un fichier par le FTP est plus fiable et entraîne moins d’erreurs au moment de l’enregistrement.

En passant par l’éditeur intégré à WordPress, j’ai souvent eu le cas où un bout de mon fichier disparaissait lors de l’enregistrement, causant une page blanche sur le blog.

Pensez toujours à enregistrer le fichier de départ avant toute modification.

Functions.php fait en effet partie des fichiers « sensibles » qui peuvent rendre votre blog inaccessible s’ils comportent une erreur.

Où trouver le fichier functions.php ?

Si vous souhaitez modifier le fichier en passant par l’interface de WordPress, allez dans le menu Apparence > Editeur.

Dans la colonne de droite, vous pouvez voir une liste des fichiers modifiables qui composent le thème de votre blog. Cherchez un fichier intitulé functions.php. Vous pouvez y apporter les modifications souhaitées puis enregistrées en cliquant sur le bouton « mettre à jour ».

Modifier un fichier dans l'éditeur de WordPress
Modifier un fichier dans l’éditeur de WordPress

Si vous souhaitez modifier le fichier en passant par le FTP, connectez-vous au serveur sur lequel vous avez stocké les fichiers de votre blog à l’aide d’un client FTP comme FileZilla ou WinSCP puis naviguez jusqu’au dossier de votre thème en entrant successivement dans les dossiers wp-content > themes > nomdutheme.

C’est à cet endroit que vous devez trouver le fichier functions.php. En faisant un clic droit dessus, vous pouvez le télécharger pour le modifier sur votre ordinateur ou l’éditer directement.

Editer le fichier functions.php via le FTP
Editer le fichier functions.php via le FTP

Quelle est la différence entre télécharger le fichier pour l’éditer et l’éditer directement ?

  • Télécharger le fichier vous permet de le modifier tranquillement hors connexion et de le sauvegarder aussi souvent que nécessaire. Vos changements ne seront visibles sur votre blog que lorsque vous déciderez de réuploader ce fichier à la place de celui qui figure dans le dossier de votre thème WordPress.
  • Éditer le fichier en direct consiste au contraire à travailler directement sur le fichier utilisé par votre blog. Autrement dit, si vous apportez une modification et que vous enregistrez le document, la modification sera immédiatement prise en compte sur le blog.

A quel endroit insérer son code ?

Le fichier functions.php est, comme son nom l’indique, un fichier écrit dans le langage PHP.

Si le fichier commence par ce morceau de code <?php et se termine par ce morceau de code ?>, vous devrez effectuer vos ajouts avant ce ?> final, comme sur cet exemple :

Insérer du code dans le fichier functions.php
Insérer du code dans le fichier functions.php

Si votre fichier ne comporte pas ce morceau de code à la toute fin (ce qui est fréquent), copiez simplement vos personnalisations après la dernière ligne de code existante.

Faites attention à ne laisser aucune ligne vide à la fin du fichier.

Si vous personnalisez votre thème WordPress, je vous conseille d’ajouter des commentaires dans votre code. Ils vous aideront à vous souvenir à quoi correspond chaque bout de code que vous ajoutez. Sur mon blog, j’utilise en général cette notation que je trouve très lisible :

// ==================================================================
// Ceci est un commentaire
// ==================================================================

Mais on peut aussi utiliser celle-ci :

/* Ceci est un autre commentaire 
sur deux lignes */

Ces commentaires n’apparaîtront pas sur votre blog, ils permettent juste de clarifier le code.

Erreurs fréquentes et solutions

L’erreur la plus fréquente quand on modifie le fichier functions.php, c’est la page blanche ! Vous enregistrez vos modifications et soudain, impossible d’accéder à votre blog qui affiche une page désespérément blanche.

  • Si vous avez fait une sauvegarde, remettez-la immédiatement en place pour que votre blog redevienne accessible le temps que vous essayiez de comprendre ce qui a causé l’erreur.
  • Si vous n’avez pas fait de sauvegarde, vous pouvez dans un premier temps effacer les personnalisations effectuées pour retrouver un blog fonctionnel (si vous n’avez plus accès au fichier via l’éditeur WordPress, passez par le FTP en suivant les conseils donnés précédemment).

Vous pouvez procéder petit à petit (en effaçant une modification à la fois et en mettant en ligne le fichier). Si votre blog redevient accessible, vous aurez alors trouvé quel ajout de code spécifique cause l’erreur.

Mais quel peut justement être le problème ?

Une erreur de code

Le langage PHP ne pardonne pas les petites erreurs ! Un point-virgule oublié, une parenthèse non refermée et votre blog affiche une belle erreur du type « Parse error: syntax error ».

Vérifiez bien que tout est en ordre de ce point de vue. Si vous rencontrez cette erreur, on vous donne en général un numéro de ligne, par exemple « functions.php on line 417 ». Il faut aller voir ce qui se passe au niveau de cette ligne qui cause le problème.

Si vous utilisez un éditeur de code, vous pouvez souvent cliquer sur une balise précise pour vérifier qu’elle a bien été refermée. Ici par exemple, si je clique au niveau de l’accolade d’ouverture, mon éditeur de texte (Notepad++) affiche en gras et en rouge l’accolade de fermeture.

Vérifier la fermeture des balises
Vérifier la fermeture des balises

Un code au mauvais endroit

Par inadvertance, vous avez copié votre code au milieu d’un autre code, vous avez laissé une ligne vide à la fin du fichier functions.php ou autre erreur… Ça peut rendre votre blog inaccessible.

Un problème d’encodage

Pendant longtemps, j’ai modifié mes fichiers en utilisant tout simplement le Bloc-Notes de Windows. Mieux vaut utiliser un éditeur de texte comme Notepad++ ou Fraise (sur Mac). Ça permet d’abord de donner des couleurs au code qui le rendent beaucoup plus lisible comme sur mon exemple ci-dessus.

Mais ça permet aussi de choisir de manière plus fine l’encodage du fichier. En l’occurrence, le fichier functions.php de WordPress doit être enregistré avec l’encodage UTF-8 (sans BOM). Sinon, ça ajoute un caractère invisible au début du fichier ce qui peut provoquer des erreurs sur votre blog. C’est un point assez technique, je vous conseille cet article si vous souhaitez en savoir plus.

Encodage UTF-8 (sans BOM)
Encodage UTF-8 (sans BOM)

Si ces méthodes ne permettent pas de résoudre le problème, vous pouvez activer le mode débogage de WordPress en allant dans le fichier wp-config.php situé à la racine du blog et en mettant la ligne WP_DEBUG sur « true » (au lieu de « false »). En allant sur votre blog, vous devriez voir la liste des erreurs détectées. N’oubliez pas de désactiver le mode débogage une fois le problème réparé.

Pour finir, si vous faites des modifications sur le fichier functions.php et qu’elles ne sont pas prises en compte sur votre blog, c’est peut-être lié à un problème de cache. Autrement dit, l’ancienne version de vos pages reste en mémoire dans votre navigateur et les changements n’apparaissent pas. Si vous utilisez un plugin de cache, videz le cache. Pensez également à vider le cache de votre navigateur (sur PC, le raccourci Ctrl+F5 est bien pratique pour ça !).

J’espère que cet article vous sera utile pour limiter la casse ! C’est très fréquent de faire des erreurs avec le fichier functions.php et on a tendance à vite paniquer quand tout le contenu du blog disparaît de l’écran. Mais la plupart du temps, la cause n’est pas très grave !

Thèmes : WordPress 

Poster un commentaire

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

8 commentaires sur “Comment modifier le fichier functions.php d’un thème WordPress ?

  • Célia

    Bonjour, je me permet une question, je ne trouve pas d’infos sur le web et je ne suis pas du tout douée!!
    Je ne peux pas avec mon thème personnaliser la police des titres, est ce qu’il y a un moyen de le faire?
    Je vous remercie.
    PS: je ne sais pas si j’abuse ou non mais pas de soucis si je n’ai pas de réponse.

    Répondre à Célia
    • Marlène

      Hello Célia, ça ne passe pas par le fichier functions.php, ça. Ça se joue plutôt dans le fichier style.css du thème, au niveau des classes intitulées « post-title » dans ton cas.

      Répondre à Marlène
    • Célia

      Merci pour cette réponse. En fait je ne sais pas où trouver ce fichier. j’aurais peut être dû préciser que j’utilise WPserveur qui est très pratique pour moi. Je ne sais pas si à travers la console je peux faire des modifications de ce type.

      Répondre à Célia
    • Marlène

      Je ne connais pas le fonctionnement exact de WP Serveur même si j’en ai beaucoup entendu parler :) En principe, le fichier se trouve tout simplement dans le répertoire du thème WordPress que tu utilises. Tu as la racine du site > le répertoire wp-content > le répertoire themes à l’intérieur > le répertoire de ton thème précis… et le fichier style.css est là.

      Il peut arriver qu’il y ait d’autres feuilles de style « cachées » dans un thème, avec par exemple un sous-dossier « css » dans le répertoire du thème et dedans, des feuilles de style. Mais le fichier principal est censé être dans le répertoire de ton thème.

      Répondre à Marlène
  • Pascal

    Très bon article, je me suis plu à le lire, j’ai appris (sur l’encodage), mais oups… je peux dire que je ne suis pas tout à fait d’accord avec toi ? Le fichier functions.php ne devrait servir que pour les modifications concernant le thème. Pour tout le reste, le codex recommande de passer par une extension.

    Parce que… si tu as un thème enfant, c’est moindre mal, en cas de mise à jour tu ne perds pas tes modifications, mais si tu changes de thème, il te faut de toute façon rajouter toutes les fonctionnalités qui ne sont pas directement liées au thème.

    Perso je recommande de passer par une extension telle que Code Snippets. Hasard surprenant, c’est le thème de l’article que je rédige aujourd’hui.

    En aparté, la balise fermante de PHP n’est en général pas utilisée en fin de fichier, pour éviter de (rares) bugs dus à une ligne vide après cette balise.

    Et pour l’édition des fichiers de thème ou d’extension dans l’interface d’administration de WordPress, tu as tout à fait raison, c’est à déconseiller. Une ligne de code à rajouter dans le fichier wp-config.php permet même de l’interdire :
    define( 'DISALLOW_FILE_EDIT', true );

    Répondre à Pascal
    • Marlène

      Hello, je n’ai pas vu cette notion dans le codex. La page sur le fichier functions.php, que je viens d’aller lire, dit justement que le fichier « est l’un des moyens de changer les comportements par défaut de WordPress. […] Le fichier functions se comporte comme un plugin WordPress, ajoutant des caractéristiques et fonctionnalités à un site WordPress. On peut l’utiliser pour appeler des fonctions, tant en PHP que des fonctions propres à WordPress, et pour définir ses propres fonctions. On peut obtenir les mêmes résultats en ajoutant du code à un plugin WordPress et via le fichier functions du thème WordPress ».

      Ils précisent d’ailleurs qu’on peut tout à fait « modifier presque tout ce que fait WordPress »… donc je suis curieuse de savoir sur quelle page tu as lu qu’il était recommandé de privilégier une extension.

      Certes, le fichier functions.php est propre à un thème mais si on change de thème, un simple copier-coller permet de transférer l’ensemble des fonctions exportables dans le nouveau thème donc on ne peut pas dire que ce soit la mer à boire, surtout si on a justement pris soin de bien commenter son code. A chaque fois que j’ai créé des sites WordPress pour un tiers, il m’a suffi d’un copier-coller pour y transférer toutes les optimisations génériques que j’effectue via ce fichier. J’y vois d’ailleurs le gros avantage de ne pas multiplier les plugins (avec tout ce que ça implique : être tributaire d’un développeur tiers qui peut arrêter la mise à jour de son plugin, multiplier les scripts et styles chargés sur le site, les risques d’incompatibilité, pouvoir agir finement sur l’ordre de chargement des éléments là où un plugin ne le permet pas toujours, etc).

      Répondre à Marlène
    • Pascal

      Oui, Marlène, l’habitude fait que… souvent je vois cette approche même par des développeurs WordPress connus et reconnus.

      On peut trouver un premier élément de réponse dans l’article Theme development dans Note for deciding when to add functions to functions.php or to a specific plugin. Il y est dit que quand la fonction doit être utilisée par plus d’un thème parent, elle doit être créée dans une extension plutôt que dans le fichier functions.php du thème. Cela peut inclure des balises de modèle et d’autres fonctions spécifiques. Les fonctions contenues dans les extensions seront vues par tous les thèmes.

      Mon interprétation est peut-être erronnée, mais je pars aussi du principe de la séparation des fonctionnalités : quand on code, en général, on ne met dans les templates que ce qui concerne les templates. PHP est un langage souple et le framework WordPress également, mais pour des questions de structuration, il me semble que le fichier functions.php soit à réserver au thème.

      Je ne suis pas non plus pour la multiplication des extensions, pour des raisons de performances et de maintenabilité, c’est d’ailleurs pour cela que j’utilise Code Snippets pour regrouper toutes les fonctions qui n’ont pas de rapport au thème lui-même.

      Répondre à Pascal
    • Marlène

      Ok, je vois… mais du coup, je pense qu’on ne parle pas de la même chose et qu’on ne fait pas du tout référence à la même cible. No Tuxedo (et cet article, donc) s’adresse à des blogueurs qui personnalisent leur blog, pas à des développeurs qui créent des thèmes ou extensions pour des tiers.

      Un blogueur n’a aucune raison d’avoir « plus d’un thème parent » sur son blog (ceux qui sont dans un cas de « multi-thèmes » sont souvent des gens qui ont fait deux installations de WordPress, domaine/sous-domaine par exemple, mais on n’atteint guère plus de deux thèmes à gérer). Bien sûr que si je veux diffuser une fonction sur un panel d’installations, mieux vaut la proposer via une extension, d’ailleurs il me semble que WordPress l’exige maintenant des développeurs qui veulent proposer leur thème sur le répertoire de thèmes « officiel », les éléments comme les shortcodes doivent être intégrés dans un plugin séparé, j’ai croisé une blogueuse il y a quelques jours qui devait justement installer un plugin pour bénéficier des shortcodes de son thème.

      Mais je ne partage pas ton point de vue quand il s’agit « juste » de gérer son propre blog.

      Répondre à Marlène
Si vous aimez les articles du site, n'hésitez pas à faire vos achats sur Amazon.fr via ce lien ; il me permettra de toucher une commission grâce au programme Partenaires Amazon EU.