Comment modifier le fichier functions.php de 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, le fichier functions.php de WordPress permet de modifier le comportement de votre site : 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 de chargement 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.

Modifier le fichier functions.php de WordPress: 2 méthodes

Pour modifier le fichier functions.php de WordPress,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 functions.php 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 enregistrer en cliquant sur le bouton "mettre à jour".

Encore une fois, je déconseille vraiment cette méthode !

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

Si vous souhaitez modifier le fichier functions.php de WordPress 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 de WordPress, 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 Erbele (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 de WordPress 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 !


Poster un commentaire

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

17 commentaires sur “Comment modifier le fichier functions.php de WordPress ?
  • Karim

    Salut Marlène, je débute dans la personnalisation de thème WordPress et en PHP et je suis tombé sur ton article très intéressant et facilement accessible.

    J’aurai une question de débutant stp je cherche un mot anglais sur mon thème wordpress que je souhaite traduire. Il n’aparaît pas bizarrement dans mon plugin Logo Translate.

    Que me conseillerais-tu comme démarche pour le retrouver dans le thème, ce que je pense avoir réussi avec l’excellent plugin String Locator ? C’est bien pour une première étape ? Ou devrai-je le chercher avec un inspecteur d’élément côté front office ?

    Ensuite je vois qu’il est présent dans plusieurs pages en PHP, pourrais-tu me dire comment je peux faire pour le débusquer et le changer please.

    Changer un mot dans un fichier html facile mais PHP j’appréhende de faire une erreur, tous tes conseils seront les bienvenus :)

    Répondre à Karim
    • Marlène

      Bonjour Karim, une méthode simple est de télécharger tout le thème sur le bureau de l’ordinateur, puis d’utiliser un logiciel comme TextCrawler (gratuit) qui va lire le contenu de tous les fichiers par type (php, css, js, etc) en recherchant le texte souhaité. On peut aussi faire un rechercher/remplacer via ce logiciel. Ca va très vite et ça permet de ne passer à côté d’aucun fichier !

      Répondre à Marlène
  • Driss

    Bonjour Marlène
    J’ai beaucoup d’admirations pour vos blogues, ils traitent des questions précises dont on trouve rarement les réponses ailleurs. Un grand merci
    Ma question : Puis-je supprimer ce code d’une image ( je pense , je suis débutant ) qui ne s’affiche plus sur mon site, et que découvrent les outils de test scannant les images :

    Merci

    Répondre à Driss
    • Marlène

      Hello Driss, le code ne passe pas dans les commentaires pour des raisons de sécurité. Si une image ne s’affiche plus sur le site et qu’elle fait partie du thème WordPress, il ne devrait pas y avoir de conséquences à supprimer le code qui l’affiche. En revanche, si l’image vient d’une autre source (ex : une image à la Une, une image dans un article), le plus simple est souvent de la changer.

      Répondre à Marlène
  • Julien

    Bonjour Marlène,

    Je vous remercie pour votre blog que je trouve très intéressant et instructif.
    En effet, je souhaite aussi faire quelques modifs sur la page register/login de mon site en ajoutant quelques cases (nom de société, numero de tva, ..) qui n’étaient pas incluses dans le template de base. J’ai suivi toutes les étapes que tu as énuméré ci-dessus et utilisé le FTP pour accéder au function.php de mon site.. Mais je me trouve avec la fameuse page blanche maintenant :-) .. j’ai fait sans doute une erreur quelque part mais je ne sais pas laquelle.
    J’ai remis le code qui était dans le fichier initial de function.php mais rien y fait! l’erreur dit « ligne 1″ mais la ligne 1 est simplement  » <?php " .. j'ai essayer d'éditer le fichier avec Notepad++ ;; il a renomé mon fichier à function 2.php . Je me demande si c'est cà le soucis?
    Je te remercie pour ton aide par avance.
    Salut
    Julien

    Répondre à Julien
    • Marlène

      Hello Julien, s’il a renommé en « function 2.php » c’est qu’il doit y avoir une autre version du fichier quelque part (ce sont souvent des versions temporaires qui sont ainsi numérotées, tant que ça t’indique bien que tes modifications « remplacent » le fichier en ligne lorsque tu les sauvegardes, c’est bon). Il faut vérifier qu’il n’y a pas d’espace ou de ligne vide avant le <?php du début. Vérifie aussi dans le menu « Encodage »de Notepad++ que c’est bien réglé sur « UTF-8 » et pas « UTF-8-BOM » par exemple.

      Répondre à Marlène
  • Guillaume

    Bonjour,
    Merci pour cet article très intéressante. ?
    Faut il crée un thème enfant pour continuer à pouvoir faire les mises à jour du thème wordpress, comme je viens de le lire sur un autre blog?

    Et alors modifier le fichier function sur le thème enfant.

    Merci

    Guillaume

    Répondre à Guillaume
    • Marlène

      Hello Guillaume, oui il est conseillé de créer un thème enfant pour toute modification apportée à un thème WordPress. Ça évite que ces modifications soient « effacées » si on met à jour le thème. Un invité du blog avait proposé tout un tutoriel ici sur la création d’un thème enfant.

      Répondre à Marlène
  • apprentus

    félicite pour ton travail bien et claire. J’aimerai savoir s’il existe une façon de modifier le fichier function.php à partir du dashboard sur WordPress 5.1.4

    Répondre à apprentus
    • Marlène

      Hello, je ne conseille vraiment pas de modifier ce fichier sans passer par le FTP (même si c’est possible via le menu Apparence > Editeur de thème), ça entraîne souvent des problèmes sur le site (page blanche notamment). Par ailleurs, je te conseille aussi de mettre à jour ta version de WordPress, tu t’exposes au piratage en continuant à utiliser une version dépassée. Il faut bien sûr penser à faire des sauvegardes avant toute modification/mise à jour de ce type !

      Répondre à Marlène
  • Chloé

    Bonjour,
    Avec la version actuelle de wordpress où il n’y a pas de menu « apparence », comment fait-on?
    Très bonne journée :)

    Répondre à Chloé
    • Marlène

      Si, le menu est toujours présent… mais ta question me laisse entendre que tu utilises WordPress.com… où tu ne peux pas modifier le code de ton site.

      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
    • Stephane

      Merci pour cette aide

      Répondre à Stephane


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.