asset 1
asset 2
asset 3
asset 2
asset 21

Functions.php dans WordPress : à quoi sert ce fichier et comment l’utiliser ?

27 août 2025

Si vous avez déjà explo­ré les fichiers de votre thème Word­Press, vous avez sûre­ment croi­sé un fichier nom­mé functions.php. Ce petit fichier dis­cret est pour­tant l’un des plus puis­sants du CMS. Il per­met d’ajouter des fonc­tion­na­li­tés per­son­na­li­sées à votre site, sans tou­cher au cœur de WordPress.

Qu’est-ce que le fichier functions.php ?

Chaque thème Word­Press pos­sède son propre fichier functions.php.
Contrai­re­ment aux fichiers de tem­plate (header.php, single.php…), qui gèrent l’affichage, ce fichier agit en arrière-plan. Il est char­gé auto­ma­ti­que­ment à chaque visite de votre site (côté public et côté administration).

Concrè­te­ment, vous pou­vez l’utiliser pour :

  • ajou­ter ou modi­fier des fonctionnalités,
  • char­ger des scripts CSS ou JavaScript,
  • adap­ter cer­tains com­por­te­ments de WordPress.

Atten­tion : si vous chan­gez de thème, vos ajouts dans functions.php dis­pa­raissent avec lui. C’est une dif­fé­rence impor­tante avec les exten­sions Word­Press, qui res­tent actives quel que soit le thème.

Et avec les thèmes FSE (Full Site Edi­ting) ?
Même si les thèmes modernes uti­lisent theme.json pour gérer styles et réglages glo­baux, le fichier functions.php reste pré­sent et utile. Vous pou­vez tou­jours y ajou­ter vos hooks et per­son­na­li­sa­tions PHP (char­ge­ment de scripts, filtres, inté­gra­tions spé­ci­fiques…). Seul style.css n’est plus indis­pen­sable dans un thème FSE.

Où se trouve functions.php et quelles sont les bonnes pratiques ?

Vous pou­vez accé­der au fichier functions.php de deux manières :

  1. Avec votre client FTP (File­zilla par ex.) ou le ges­tion­naire de fichiers de votre héber­ge­ment :
    Le fichier est situé dans : /wp-content/themes/nom-du-theme/functions.php
    C’est la méthode la plus sûre : vous pou­vez sau­ve­gar­der le fichier avant modi­fi­ca­tion et cor­ri­ger faci­le­ment une erreur éventuelle.
  2. Depuis le tableau de bord Word­Press :
    Il existe un accès dans Appa­rence > Édi­teur de fichiers de thème.
    Mais ce n’est pas conseillé, car : 
    • sur un site bien sécu­ri­sé, cette option est nor­ma­le­ment désactivée ;
    • un pirate qui com­pro­met un compte admi­nis­tra­teur pour­rait y injec­ter du code malveillant ;
    • la moindre erreur de syn­taxe peut blo­quer l’accès à tout le site sans pos­si­bi­li­té de cor­ri­ger depuis l’admin.
Emplacement fichier functions.php
Empla­ce­ment du fichier functions.php dans mon thème enfant

Bonne pra­tique : Pré­fé­rez tou­jours le FTP ou le ges­tion­naire de fichiers de votre héber­ge­ment (chez o2switch par exemple, via cPa­nel) et pro­té­gez votre site en blo­quant l’accès à cet édi­teur (DISALLOW_FILE_EDIT dans wp-config.php).

Exemples de snippets liées à la personnalisations du thème

Voi­ci quelques extraits simples, on appelle cela aus­si des snip­pets, que vous pou­vez tes­ter dans le functions.php de votre thème enfant. Chaque exemple est com­men­té pour que vous puis­siez com­prendre son rôle.

1. Modifier le texte « Lire la suite »

if ( ! function_exists( 'em_modifier_lire_suite' ) ) {
    // Changer le texte par défaut "..." à la fin des extraits
    function em_modifier_lire_suite($more) {
        // On ajoute un lien "Continuer la lecture" vers l'article complet
        return ' <a href="' . get_permalink() . '">Continuer la lecture</a>';
    }
}
add_filter('excerpt_more', 'em_modifier_lire_suite');

2. Changer la longueur des extraits

// Définir la longueur des extraits à 20 mots
function em_longueur_extrait($length) {
    return 20; // Nombre de mots
}
add_filter('excerpt_length', 'em_longueur_extrait');

3. Masquer la barre d’administration pour les non-admins

// Masquer la barre d'administration pour tous sauf les administrateurs
function em_masquer_admin_bar() {
    if ( ! current_user_can('manage_options') ) {
        show_admin_bar(false);
    }
}
// Le hook wp_loaded est plus sûr que after_setup_theme pour vérifier current_user_can()
add_action('wp_loaded', 'em_masquer_admin_bar');

4. Charger un fichier CSS ou JS personnalisé

// Charger un fichier CSS et un fichier JavaScript personnalisés
function em_charger_assets() {
    // Feuille de style CSS (dans /css/custom.css du thème enfant)
    wp_enqueue_style(
        'style-perso',
        get_stylesheet_directory_uri() . '/css/custom.css',
        array(),
        '1.0.0' // version, utile pour le cache navigateur
    );

    // Script JS (dans /js/custom.js du thème enfant)
    wp_enqueue_script(
        'script-perso',
        get_stylesheet_directory_uri() . '/js/custom.js',
        array('jquery'), // dépendance
        '1.0.0',         // version
        true             // chargé en bas de page
    );
}
add_action('wp_enqueue_scripts', 'em_charger_assets');

Note : get_stylesheet_directory_uri() pointe vers le thème enfant. Si vous tra­vaillez direc­te­ment dans un thème parent, uti­li­sez get_template_directory_uri().

Exemples de snippets pour adapter le comportement d’extensions

Functions.php ne se limite pas au thème : il per­met aus­si de per­son­na­li­ser des exten­sions sans modi­fier leur code. Voi­ci trois exemples concrets.

1. Extension Public Post Preview : prolonger la durée des liens

// Étendre la durée des liens de prévisualisation à 30 jours
add_filter('ppp_nonce_life', function () {
    return 30 * DAY_IN_SECONDS;
});

2. WooCommerce : changer le nombre de produits par page

// Afficher 24 produits par page au lieu de 12
add_filter('loop_shop_per_page', function ($cols) {
    return 24;
}, 20);

Un mot sur les crochets (hooks)

Dans tous les exemples ci-des­sus, vous avez vu appa­raître add_action() et add_filter().
Ce sont les fameux hooks (cro­chets), le sys­tème qui per­met d’« accro­cher » votre code à Word­Press ou à une extension.

  • Les actions (add_action) ajoutent du code à un moment précis.
  • Les filtres (add_filter) modi­fient une valeur géné­rée par Word­Press ou un plugin.

Pour décou­vrir ce méca­nisme en détail, consul­tez : Les exten­sions Word­Press (par­tie 13) : fonc­tion­ne­ment, typo­lo­gie et bonnes pra­tiques.

Erreurs fréquentes à éviter

  • Oublier la balise <?php en début de fichier.
  • Fer­mer le fichier avec ?> (tou­jours proscrire).
  • Ajou­ter du code sans uti­li­ser add_action() ou add_filter().
  • Dupli­quer des noms de fonc­tions → uti­li­sez tou­jours un pré­fixe unique (nom du thème, du site ou vos initiales).
  • Modi­fier functions.php direc­te­ment en production.
  • Ne pas avoir tes­té d’abord en envi­ron­ne­ment de déve­lop­pe­ment (local ou préprod).
  • Oublier de véri­fier les logs d’erreurs PHP en cas de problème.

Functions.php ou extension ?

En résu­mé :

  • Uti­li­sez functions.php pour les per­son­na­li­sa­tions liées au thème.
  • Pré­fé­rez une exten­sion (ou un mu-plu­gin) pour les fonc­tion­na­li­tés glo­bales et durables.

Pour mieux comprendre :

Conclusion

Le fichier functions.php est une porte d’entrée simple pour per­son­na­li­ser Word­Press. Avec un peu de pra­tique, vous pour­rez modi­fier le com­por­te­ment du CMS, adap­ter vos exten­sions et enri­chir votre thème… tout cela avec quelques lignes de code.

Mais sou­ve­nez-vous :

  • Tra­vaillez dans un thème enfant,
  • Sau­ve­gar­dez avant chaque modification,
  • Blo­quez l’accès à l’éditeur de fichiers depuis le tableau de bord pour sécu­ri­ser votre site,
  • Tes­tez tou­jours vos modi­fi­ca­tions sur un envi­ron­ne­ment de déve­lop­pe­ment avant la production,
  • Et dis­tin­guez ce qui relève du thème (functions.php) de ce qui relève d’une fonc­tion­na­li­té glo­bale (exten­sion ou mu-plugin).

Pour aller plus loin, décou­vrez Com­ment fonc­tionne un site Word­Press ?.


Pho­to de l’image mise en avant : mer­ci à Lavi Per­chik

2 Comments

  1. J’ai un site FSE, Pour limi­ter les risques d’é­cri­ture dans les fichiers ou les pro­blèmes divers avec le FTP etc. j’u­ti­lise l’ex­ten­sion WP Code qui même en ver­sion gra­tuite per­met d’a­jou­ter ou modi­fier sim­ple­ment et sans risque des fonc­tion­na­li­tés au site ou à des exten­sions, voire de se pas­ser d’autres exten­sions et d’al­lé­ger sin­gu­liè­re­ment les choses. Par exemple : ajou­ter le temps de lec­ture des articles, désac­ti­ver le self ping, les com­men­taires… indi­quer auto­ma­ti­que­ment le nombre d’ar­ticles… Le plu­gin a une banque de pro­po­si­tions mais l’IA peut aus­si en faire à tes­ter (Claude, ChatGpt) et si ça coince on peut désac­ti­ver sans prendre trop de risques… je n’é­cris plus direc­te­ment dans functions.php Mer­ci encore pour tous ces éclai­rages péda­go­giques et les points de vigilance !

    • Éric Martin dit :

      Bon­jour,
      Mer­ci pour votre com­men­taire ! Vous sou­li­gnez en effet une approche de plus en plus uti­li­sée et très inté­res­sante. L’usage d’extensions comme WPCode (ou équi­va­lentes) per­met d’ajouter faci­le­ment des snip­pets PHP ou JS sans avoir à modi­fier direc­te­ment le fichier functions.php.

      Ces solu­tions offrent plu­sieurs avan­tages : cen­tra­li­sa­tion des ajouts de code (désor­mais par­fois dans le cloud), ges­tion simple via l’interface d’administration, pos­si­bi­li­té d’activer ou désac­ti­ver un snip­pet en un clic pour tes­ter ou cor­ri­ger rapi­de­ment un pro­blème. Elles per­mettent aus­si de se pas­ser dans bien des cas d’un thème enfant, puisque les snip­pets sont indé­pen­dants du thème.

      Comme vous le men­tion­nez, c’est éga­le­ment une bonne façon d’alléger le site en évi­tant d’installer une mul­ti­tude de petites exten­sions pour des fonc­tions très simples.

      Encore mer­ci pour ce retour, il com­plète bien l’article !
      (Ça méri­te­rait un article à part entière, non ? 🙂 )

Laisser un commentaire

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