WordPress repose sur deux fichiers PHP fondamentaux pour sa configuration et son fonctionnement : wp-config.php et functions.php. Ces deux fichiers, bien que distincts, jouent un rôle crucial dans la sécurité, les performances et les fonctionnalités de votre site. Pourtant, beaucoup de développeurs et d’administrateurs les sous-estiment ou les utilisent de manière inadéquate.
Le fichier wp-config.php est le cœur de la configuration de WordPress. Il contient des informations sensibles comme les identifiants de la base de données, mais aussi des paramètres avancés qui peuvent booster les performances ou renforcer la sécurité. Quant au fichier functions.php, il agit comme un plugin intégré à votre thème, permettant d’ajouter des fonctionnalités personnalisées sans modifier le code source de WordPress.
Dans ce guide complet, nous explorerons en profondeur ces deux fichiers, leurs différences, leurs cas d’usage avancés et les bonnes pratiques pour les exploiter au maximum. Que vous soyez débutant ou développeur expérimenté, vous découvrirez comment tirer parti de leur puissance pour créer un site WordPress plus performant, sécurisé et personnalisé.
Comprendre wp-config.php : Le fichier de configuration central de WordPress
Qu’est-ce que wp-config.php et où le trouver ?
Le fichier wp-config.php est situé à la racine de votre installation WordPress. Il est généré automatiquement lors de l’installation, mais peut être modifié manuellement pour ajouter des configurations spécifiques. Contrairement aux fichiers du cœur de WordPress, il n’est pas remplacé lors des mises à jour, ce qui en fait un endroit idéal pour stocker des paramètres personnalisés.
Pour y accéder, connectez-vous à votre serveur via FTP, SFTP ou le gestionnaire de fichiers de votre hébergeur. Cherchez le fichier dans le même dossier que wp-admin, wp-content et wp-includes. Si vous ne le voyez pas, assurez-vous que votre client FTP affiche les fichiers cachés (souvent désignés par un point devant leur nom, comme .wp-config.php).
Les informations essentielles contenues dans wp-config.php
Ce fichier contient plusieurs types d’informations critiques :
- Identifiants de la base de données : Nom de la base, utilisateur, mot de passe et serveur MySQL.
- Clés de sécurité uniques : Les fameuses SALT keys qui chiffrent les cookies et les sessions utilisateurs.
- Préfixe des tables : Permet de modifier le préfixe par défaut
wp_pour renforcer la sécurité. - Paramètres de débogage : Activer ou désactiver le mode debug pour le développement.
- Langue et encodage : Définir la langue de WordPress et l’encodage des caractères.
Personnaliser wp-config.php pour améliorer la sécurité
Au-delà des paramètres de base, wp-config.php offre des options avancées pour sécuriser votre site :
1. Modifier le préfixe des tables
Par défaut, WordPress utilise le préfixe wp_ pour toutes ses tables. En le changeant, vous rendez plus difficile les attaques par force brute. Pour ce faire, ajoutez cette ligne dans wp-config.php avant la ligne / That's all, stop editing! / :
define('DB_TABLE_PREFIX', 'mon_prefixe_');
2. Désactiver l’édition de fichiers dans le tableau de bord
WordPress permet d’éditer les fichiers de thème et de plugin directement depuis l’interface d’administration. Cette fonctionnalité peut être dangereuse si un pirate accède à votre tableau de bord. Pour la désactiver :
define('DISALLOW_FILE_EDIT', true);
3. Limiter les révisions d’articles
Les révisions d’articles peuvent rapidement alourdir votre base de données. Pour limiter leur nombre :
define('WP_POST_REVISIONS', 5); // Limite à 5 révisions par article
4. Forcer SSL pour l’administration et la connexion
Pour sécuriser les connexions, ajoutez :
define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true);
Optimiser les performances avec wp-config.php
WordPress propose plusieurs constantes pour améliorer les performances, notamment en réduisant les requêtes à la base de données :
1. Activer la mise en cache
Pour activer la mise en cache des objets :
define('WP_CACHE', true);
2. Désactiver les mises à jour automatiques
Si vous gérez manuellement les mises à jour, désactivez les mises à jour automatiques pour éviter les conflits :
define('AUTOMATIC_UPDATER_DISABLED', true);
3. Augmenter la mémoire PHP
Si votre site rencontre des erreurs de mémoire, augmentez la limite :
define('WP_MEMORY_LIMIT', '256M');
functions.php : Le couteau suisse de personnalisation de WordPress
Rôle et emplacement de functions.php
Le fichier functions.php est situé dans le dossier de votre thème actif, généralement dans /wp-content/themes/nom-du-theme/. Contrairement à wp-config.php, il fait partie du thème et est donc sensible aux mises à jour du thème. Il permet d’ajouter des fonctionnalités personnalisées sans modifier le code source de WordPress ou des plugins.
Ce fichier agit comme un plugin léger intégré à votre thème. Il est exécuté à chaque chargement de page, ce qui en fait un outil puissant pour modifier le comportement de WordPress, ajouter des hooks (actions et filtres), ou même créer des fonctionnalités complexes.
Les bases de functions.php : Ajouter des fonctionnalités simples
Voici quelques exemples concrets de personnalisations que vous pouvez ajouter à functions.php :
1. Supprimer les emojis de WordPress
Les emojis ajoutent des scripts inutiles qui ralentissent votre site. Pour les désactiver :
// Désactiver les emojis function disable_emojis() { remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('admin_print_scripts', 'print_emoji_detection_script'); remove_action('wp_print_styles', 'print_emoji_styles'); remove_action('admin_print_styles', 'print_emoji_styles'); remove_filter('the_content_feed', 'wp_staticize_emoji'); remove_filter('comment_text_rss', 'wp_staticize_emoji'); remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); } add_action('init', 'disable_emojis');
2. Personnaliser l’excerpt (extrait d’article)
Pour modifier la longueur de l’extrait par défaut :
// Modifier la longueur de l'excerpt function custom_excerpt_length($length) { return 20; // Nombre de mots } add_filter('excerpt_length', 'custom_excerpt_length');
3. Ajouter des tailles d’image personnalisées
Pour créer de nouvelles tailles d’images dans WordPress :
// Ajouter des tailles d'image personnalisées add_action('after_setup_theme', 'custom_image_sizes'); function custom_image_sizes() { add_image_size('custom-thumb', 400, 300, true); // Largeur, hauteur, crop }
Utiliser les hooks dans functions.php : Actions et filtres
Les hooks sont au cœur de la personnalisation de WordPress. Ils permettent d’exécuter du code à des moments spécifiques du chargement de la page. Dans functions.php, vous pouvez utiliser deux types de hooks :
1. Les actions (actions)
Les actions permettent d’exécuter du code à un moment précis. Par exemple, pour ajouter du CSS personnalisé :
// Ajouter du CSS personnalisé function add_custom_styles() { echo 'body { background: #f0f0f0; }'; } add_action('wp_head', 'add_custom_styles');
2. Les filtres (filters)
Les filtres permettent de modifier des données avant qu’elles ne soient affichées. Par exemple, pour changer le titre de la page d’accueil :
// Modifier le titre de la page d'accueil function change_home_title($title) { if (is_home() || is_front_page()) { return 'Bienvenue sur mon site !'; } return $title; } add_filter('pre_get_document_title', 'change_home_title');
Sécuriser functions.php et éviter les conflits
Bien que functions.php soit un outil puissant, son utilisation nécessite quelques précautions pour éviter les problèmes :
1. Utiliser des noms de fonctions uniques
Pour éviter les conflits avec d’autres plugins ou thèmes, utilisez des préfixes uniques pour vos fonctions :
// Mauvaise pratique : fonction générique function my_function() { ... } // Bonne pratique : fonction préfixée function monprefixe_my_function() { ... }
2. Désactiver les fonctions inutiles
Si vous utilisez un thème ou un plugin qui ajoute des fonctionnalités que vous n’utilisez pas, désactivez-les dans functions.php :
// Désactiver les widgets WordPress par défaut function disable_default_widgets() { unregister_widget('WP_Widget_Pages'); unregister_widget('WP_Widget_Calendar'); // Ajoutez d'autres widgets à désactiver } add_action('widgets_init', 'disable_default_widgets');
3. Utiliser un thème enfant pour éviter les pertes de personnalisation
Si vous modifiez directement le fichier functions.php de votre thème principal, vos modifications seront perdues lors de la mise à jour du thème. Pour éviter cela, créez un thème enfant et placez-y votre fichier functions.php personnalisé.
wp-config.php vs functions.php : Quand et comment les utiliser ?
Différences clés entre les deux fichiers
Bien que wp-config.php et functions.php soient tous deux des fichiers PHP, ils ont des rôles et des emplacements distincts :
Critère wp-config.php functions.php Emplacement À la racine de WordPress Dans le dossier du thème actif Rôle Configuration globale de WordPress Personnalisation du thème Sensible aux mises à jour Non (sauf si WordPress est mis à jour) Oui (lié au thème) Sécurité Contient des informations sensibles (base de données) Moins sensible, mais peut contenir du code malveillant Performances Optimisation globale du site Personnalisation des fonctionnalités
Cas d’usage : Quand utiliser l’un ou l’autre ?
Voici quelques scénarios pour vous aider à choisir entre wp-config.php et functions.php :
Utilisez wp-config.php pour :
- Configurer les identifiants de la base de données.
- Activer ou désactiver des fonctionnalités globales (SSL, debug, cache).
- Modifier le préfixe des tables pour renforcer la sécurité.
- Définir des constantes PHP avancées (mémoire, encodage, langue).
- Gérer les mises à jour automatiques de WordPress.
Utilisez functions.php pour :
- Ajouter des fonctionnalités spécifiques au thème (styles, scripts, widgets).
- Modifier le comportement des articles, pages ou taxonomies.
- Personnaliser les hooks (actions et filtres) pour étendre WordPress.
- Créer des tailles d’images personnalisées.
- Désactiver des fonctionnalités par défaut de WordPress.
Exemple concret : Optimiser un site WordPress
Imaginons que vous souhaitez optimiser un site WordPress en combinant les deux fichiers. Voici comment procéder :
Dans wp-config.php :
// Sécurité define('DISALLOW_FILE_EDIT', true); define('WP_POST_REVISIONS', 5); define('AUTOMATIC_UPDATER_DISABLED', true); // Performances define('WP_MEMORY_LIMIT', '256M'); define('WP_CACHE', true);
// Base de données define('DB_TABLE_PREFIX', 'wp_secure_');
Dans functions.php :
// Personnalisation du thème add_action('after_setup_theme', 'custom_theme_setup'); function custom_theme_setup() { add_theme_support('post-thumbnails'); add_image_size('custom-thumb', 400, 300, true); } // Désactiver les emojis add_action('init', 'disable_emojis');
// Modifier l'excerpt add_filter('excerpt_length', 'custom_excerpt_length'); function custom_excerpt_length($length) { return 20; }
Bonnes pratiques et erreurs à éviter
Sécurité : Protéger wp-config.php et functions.php
Ces deux fichiers sont critiques pour le bon fonctionnement de votre site. Voici comment les sécuriser :
1. Protéger wp-config.php
- Déplacer wp-config.php : Bien que WordPress le recherche automatiquement à la racine, vous pouvez le déplacer dans un dossier parent. Assurez-vous que le chemin est correct dans
wp-load.php. - Modifier les permissions : Définissez les permissions à
644(lecture/écriture pour le propriétaire, lecture pour les autres). - Bloquer l’accès direct : Ajoutez ces lignes dans votre fichier
.htaccess:
# Bloquer l'accès à wp-config.php Order Allow,Deny Deny from all
2. Sécuriser functions.php
- Utiliser un thème enfant : Évitez de modifier directement le fichier functions.php de votre thème principal.
- Vérifier les codes sources : Si vous utilisez un thème ou un plugin tiers, vérifiez que le code ajouté dans functions.php est sûr.
- Désactiver l’édition de fichiers : Dans wp-config.php, ajoutez :
define('DIS

