Si vous avez déjà exploré les fichiers de votre thème WordPress, vous avez sûrement croisé un fichier nommé functions.php. Ce petit fichier discret est pourtant l’un des plus puissants du CMS. Il permet d’ajouter des fonctionnalités personnalisées à votre site, sans toucher au cœur de WordPress.
Qu’est-ce que le fichier functions.php ?
Chaque thème WordPress possède son propre fichier functions.php.
Contrairement aux fichiers de template (header.php, single.php…), qui gèrent l’affichage, ce fichier agit en arrière-plan. Il est chargé automatiquement à chaque visite de votre site (côté public et côté administration).
Concrètement, vous pouvez l’utiliser pour :
- ajouter ou modifier des fonctionnalités,
- charger des scripts CSS ou JavaScript,
- adapter certains comportements de WordPress.
Attention : si vous changez de thème, vos ajouts dans functions.php disparaissent avec lui. C’est une différence importante avec les extensions WordPress, qui restent actives quel que soit le thème.
Et avec les thèmes FSE (Full Site Editing) ?
Même si les thèmes modernes utilisent theme.json pour gérer styles et réglages globaux, le fichier functions.php reste présent et utile. Vous pouvez toujours y ajouter vos hooks et personnalisations PHP (chargement de scripts, filtres, intégrations spécifiques…). Seul style.css n’est plus indispensable dans un thème FSE.
Où se trouve functions.php et quelles sont les bonnes pratiques ?
Vous pouvez accéder au fichier functions.php de deux manières :
- Avec votre client FTP (Filezilla par ex.) ou le gestionnaire de fichiers de votre hébergement :
Le fichier est situé dans :/wp-content/themes/nom-du-theme/functions.php
C’est la méthode la plus sûre : vous pouvez sauvegarder le fichier avant modification et corriger facilement une erreur éventuelle. - Depuis le tableau de bord WordPress :
Il existe un accès dans Apparence > Éditeur de fichiers de thème.
Mais ce n’est pas conseillé, car :- sur un site bien sécurisé, cette option est normalement désactivée ;
- un pirate qui compromet un compte administrateur pourrait y injecter du code malveillant ;
- la moindre erreur de syntaxe peut bloquer l’accès à tout le site sans possibilité de corriger depuis l’admin.

Bonne pratique : Préférez toujours le FTP ou le gestionnaire de fichiers de votre hébergement (chez o2switch par exemple, via cPanel) et protégez votre site en bloquant l’accès à cet éditeur (DISALLOW_FILE_EDIT dans wp-config.php).
Exemples de snippets liées à la personnalisations du thème
Voici quelques extraits simples, on appelle cela aussi des snippets, que vous pouvez tester dans le functions.php de votre thème enfant. Chaque exemple est commenté pour que vous puissiez comprendre 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 travaillez directement dans un thème parent, utilisez get_template_directory_uri().
Exemples de snippets pour adapter le comportement d’extensions
Functions.php ne se limite pas au thème : il permet aussi de personnaliser des extensions sans modifier leur code. Voici 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-dessus, vous avez vu apparaître add_action() et add_filter().
Ce sont les fameux hooks (crochets), le système qui permet d’« accrocher » votre code à WordPress ou à une extension.
- Les actions (
add_action) ajoutent du code à un moment précis. - Les filtres (
add_filter) modifient une valeur générée par WordPress ou un plugin.
Pour découvrir ce mécanisme en détail, consultez : Les extensions WordPress (partie 1/3) : fonctionnement, typologie et bonnes pratiques.
Erreurs fréquentes à éviter
- Oublier la balise
<?phpen début de fichier. - Fermer le fichier avec
?>(toujours proscrire). - Ajouter du code sans utiliser
add_action()ouadd_filter(). - Dupliquer des noms de fonctions → utilisez toujours un préfixe unique (nom du thème, du site ou vos initiales).
- Modifier functions.php directement en production.
- Ne pas avoir testé d’abord en environnement de développement (local ou préprod).
- Oublier de vérifier les logs d’erreurs PHP en cas de problème.
Functions.php ou extension ?
En résumé :
- Utilisez functions.php pour les personnalisations liées au thème.
- Préférez une extension (ou un mu-plugin) pour les fonctionnalités globales et durables.
Pour mieux comprendre :
- Les thèmes dans WordPress : fonctionnement, choix et installation
- Extensions WordPress : le guide complet
Conclusion
Le fichier functions.php est une porte d’entrée simple pour personnaliser WordPress. Avec un peu de pratique, vous pourrez modifier le comportement du CMS, adapter vos extensions et enrichir votre thème… tout cela avec quelques lignes de code.
Mais souvenez-vous :
- Travaillez dans un thème enfant,
- Sauvegardez avant chaque modification,
- Bloquez l’accès à l’éditeur de fichiers depuis le tableau de bord pour sécuriser votre site,
- Testez toujours vos modifications sur un environnement de développement avant la production,
- Et distinguez ce qui relève du thème (functions.php) de ce qui relève d’une fonctionnalité globale (extension ou mu-plugin).
Pour aller plus loin, découvrez Comment fonctionne un site WordPress ?.
Photo de l’image mise en avant : merci à Lavi Perchik














J’ai un site FSE, Pour limiter les risques d’écriture dans les fichiers ou les problèmes divers avec le FTP etc. j’utilise l’extension WP Code qui même en version gratuite permet d’ajouter ou modifier simplement et sans risque des fonctionnalités au site ou à des extensions, voire de se passer d’autres extensions et d’alléger singulièrement les choses. Par exemple : ajouter le temps de lecture des articles, désactiver le self ping, les commentaires… indiquer automatiquement le nombre d’articles… Le plugin a une banque de propositions mais l’IA peut aussi en faire à tester (Claude, ChatGpt) et si ça coince on peut désactiver sans prendre trop de risques… je n’écris plus directement dans functions.php Merci encore pour tous ces éclairages pédagogiques et les points de vigilance !
Bonjour,
Merci pour votre commentaire ! Vous soulignez en effet une approche de plus en plus utilisée et très intéressante. L’usage d’extensions comme WPCode (ou équivalentes) permet d’ajouter facilement des snippets PHP ou JS sans avoir à modifier directement le fichier functions.php.
Ces solutions offrent plusieurs avantages : centralisation des ajouts de code (désormais parfois dans le cloud), gestion simple via l’interface d’administration, possibilité d’activer ou désactiver un snippet en un clic pour tester ou corriger rapidement un problème. Elles permettent aussi de se passer dans bien des cas d’un thème enfant, puisque les snippets sont indépendants du thème.
Comme vous le mentionnez, c’est également une bonne façon d’alléger le site en évitant d’installer une multitude de petites extensions pour des fonctions très simples.
Encore merci pour ce retour, il complète bien l’article !
(Ça mériterait un article à part entière, non ? 🙂 )