wp-config.php et functions.php : 2 fichiers essentiels à WordPress

Vous les avez sûrement déjà aperçus. Il s’agit de deux fichiers juchés au cœur de votre installation WordPress. Je veux bien sûr parler de wp-config.php et functions.php. Ils sont tous les deux indispensables au fonctionnement d’un site internet WordPress. D’ailleurs, ils sont tellement sensibles que vous évitez peut-être d’y toucher… Or, leurs possibilités sont tellement étendues que vous pourriez ! À condition d’être prudent, bien sûr.

Et la prudence commence par savoir de quoi on parle ! Donc plongeons ensemble à la découverte des fichiers wp-config.php et functions.php et de leurs spécificités !

wp-config et functions : les deux piliers d’un bon WordPress

Functions.php et WP-config.php sont deux fichiers centraux d’une installation WordPress pour personnaliser, sécuriser et optimiser un site web.

 

wp-config.php : le lien avec votre base de données WordPress

Commençons par celui qui arrive en premier : le fichier wp-config.php. En premier parce qu’il se trouve à la racine de votre installation. Par racine, j’entends l’endroit où se trouvent vos dossiers de base : wp-admin, wp-content et wp-includes.

situation wp config

Le fichier wp-config.php se trouve à la racine de votre installation WordPress, sous les dossiers wp-admin, wp-content et wp-includes.

Mais qu’est-ce que le wp-config.php et à quoi sert-il ? Eh bien, pour le résumer à sa fonction primaire, ce fichier indique à la base de données comment accéder à vos fichiers et comment les traiter. Quand je vous disais qu’il était très important…

Mais alors, comment se fait-il que vous puissiez faire fonctionner votre WordPress sans jamais avoir affaire à lui ? Peut-être même en entendez-vous parler pour la première fois ?

Il se peut que votre hébergeur le remplisse automatiquement à votre place lors de la création de votre site web. Cependant, la situation la plus fréquente est que vous le remplissez sans vous en rendre compte. En effet, lors de l’installation rapide de WordPress, vous devez remplir les informations concernant votre base de données.

Base de données et installation WordPress

Les informations relatives à la base de données sont entrées automatiquement dans le wp-config.php lors de l’installation rapide de WordPress

Ces informations vont directement dans votre wp-config.php en s’organisant comme ci-dessous.

wp-config.php : le lien avec votre base de données WordPress

Les informations relatives à la base de données se trouve en tête du fichier wp-config.php

Un fichier à connaître mais à ne pas prendre à la légère !

Voici donc le cœur du wp-config.php et toute sa délicatesse. Une modification dans la base de données sans lui en référer, ou vis-versa, et c’est une erreur qui pointe le bout de son nez ! Donc, pour cette partie, tenez-vous-en à ce qui y est déjà inscrit, qu’il s’agisse du nom de la base de données, de l’identifiant ou du mot de passe en passant par le nom du serveur, le préfixe de vos tables de base de données et même l’adresse de votre site web.

Toutefois, lorsque vous serez bien à l’aise avec ce fichier et son maniement, celui-ci vous permettra de contrôler certains comportements de la base de données sans avoir à vous y rendre. Je vous ai d’ailleurs parlé de l’un d’eux ici.

Gérer l’architecture de vos fichiers avec le wp-config.php

Cependant, tout ce que je viens de vous expliquer appartenait à la partie “facile”. En effet, il ne s’agit pas de la seule fonction du wp-config.php. À partir de ce fichier, vous pouvez aussi modifier l’architecture de votre installation. J’entends par là : changer le nom et l’emplacement de certains répertoires comme wp-content, uploads ou encore plugins. En quoi est-ce utile ? Eh bien, WordPress s’installe par défaut avec ces répertoires dans cette composition. Une composition connue de tous et donc facilement identifiable pour quiconque arriverait à s’introduire dans votre site. Personnaliser l’architecture de votre site est donc un bon moyen de surprendre et décourager certains petits malins.

Comment remplir le wp-config pour personnaliser votre WordPress ?

Allez, comme je ne suis pas un monstre, je vous donne au passage les quelques lignes à insérer pour réaliser ces modifications. Pour cela, rendez-vous tout en bas du fichier, après la ligne “/* That’s all, stop editing! Happy publishing. */” (parce qu’on est des fous). Ensuite, c’est juste après ces lignes que l’on va entrer les nôtres.

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
    define( 'ABSPATH', __DIR__ . '/' );
}

Mais juste avant celles-ci.

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

Ainsi, pour modifier le répertoire wp-content, entrez ces lignes dans le wp-config.php :

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/mon-nouveau-repertoire' );
define( 'WP_CONTENT_URL', 'https://www.mon-site.com/mon-nouveau-repertoire' );

ATTENTION: pensez bien à renommer le dossier wp-content avec la nouvelle appellation dans votre installation.

Pour le fichier uploads, entrez cette ligne dans le wp-config.php :

define( 'UPLOADS', 'nouveau-dossier/nouveau-uploads' );

ATTENTION : pensez bien à créer le nouveau dossier et à y déposer le dossier uploads renommé.

Enfin, pour le dossier des plugins, entrez ces lignes dans le wp-config.php :

define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/encore-nouveau-dossier'/nouveau-plugins' );
define( 'WP_PLUGIN_URL', 'https://www.mon-site.com/encore-nouveau-dossier'/nouveau-plugins' );

Comme pour les précédents exemples, n’oubliez surtout pas de créer le nouveau dossier spécifié si besoin et d’y inclure l’ancien dossier plugins renommé.

LE fichier où configurer la sécurité…

Pourquoi  ai-je donc fait tout ce laïus sur l’architecture de votre installation ? Eh bien parce qu’il s’agit d’un réglage de sécurité pas trop compliqué. Mais ce n’est pas le seul que permet le fichier wp-config ! En effet, il fait partie des trois fichiers adéquats pour ce genre de manipulation. D’ailleurs, parmi les deux autres, on retrouve, le functions.php.

En fait, il est tellement fait pour ça que, si vous installez et activez un plugin de sécurité, certains réglages que vous aurez réalisés dans l’administration WordPress vont se répercuter dans le wp-config.php. Pour les plus courants, on notera l’activation du certificat SSL et l’obligation de d’accéder au panneau d’administration WordPress en https. Allez vérifier. Je suis sûr que vous trouverez au moins cette ligne.

define( 'FORCE_SSL_ADMIN', true );

D’ailleurs, si vous souhaitez pousser plus loin la sécurisation de TOUS les accès à votre site, vous pouvez aussi forcer la connexion via https à votre FTP avec ces lignes.

Define ('FTP_SSL', true);

D’autre part, il est fort probable que vous retrouviez votre réglage de désactivation de l’éditeur de thème et d’extensions dans l’administration avec ces lignes.

define( 'DISALLOW_FILE_EDIT', true );

Bien sûr, vous pouvez très bien ajouter ces lignes vous-même plutôt que laisser un plugin le faire à votre place. Faîtes juste attention à les entrer avant la ligne “/* That’s all, stop editing! Happy publishing. */”.

Pour d’avantage de sécurité, il est aussi possible de définir via votre wp-config.php, la home de votre site, le siteurl ainsi que le domaine de cookie.

define('WP_HOME','https://votresite.com'); 
define('WP_SITEURL','https://votresite.com');
define('COOKIE_DOMAIN', '.votresite.com');

C’est bien beau mais je préfère les plugins…

Le but de cette explication est plutôt de montrer que savoir manier le wp-config.php est une opportunité d’alléger votre installation WordPress. En effet, moins de plugins il y a, plus vous évitez les risques de conflits et le nombre de requêtes qui allongent le temps de chargement de votre site. Et je ne parle même pas de l’ajout de dossiers et fichiers ainsi que de tables dans la base de données… De plus, connaître le potentiel de vos fichiers est aussi un moyen de mieux penser la construction de votre site en amont ! Car, moins vous faîtes de tests, moins vous risquez d’installer et laisser trainer ensuite des fichiers ou données non nécessaires qui alourdissent inutilement votre site web.

En attendant ces jours heureux, sachez que le fichier wp-config vous permettra aussi de désactiver les mises à jour automatiques de WordPress, modifier les clés de salage ou encore gérer les permissions de fichiers plutôt que par l’intermédiaire d’un outil de transfert FTP.

Gérer la performance via votre wp-config.php ?

On a parlé de l’importance du wp-config.php vis-à-vis de la base de données. On a aussi parlé des possibilités offertes en terme de sécurité. Cependant, ça ne s’arrête pas là ! En effet, le fichier wp-config propose aussi d’optimiser les performances de votre site web. Et ce de diverses manières bien que les options les plus importantes soient en lien avec la base de données. Car oui, on en revient au rôle primaire du fichier de lien entre l’installation WordPress et cette fameuse base de données.

Limiter les articles et pages obsolètes ? C’est possible !

Ainsi, la plus utile qui vous économisera peut-être un plugin est la gestion des révisions d’articles. En effet, vous pouvez définir manuellement le nombre de révisions d’articles à conserver en base de données avec cette ligne (ici, le nombre est fixé à 3).

define('WP_POST_REVISIONS', 3);

Cependant, vous pouvez aussi tout simplement supprimer la sauvegarde des révisions d’articles comme ceci.

define('WP_POST_REVISIONS', false );

Enfin, dans le même domaine, vous pouvez aussi définir le nombre de jours durant lesquels les articles et pages supprimées peuvent être conservés dans la corbeille (ici, ce nombre est fixé à 30).

define('EMPTY_TRASH_DAYS', 30 );

Pour empêcher vos contenus de passer par la case “corbeille”, fixez le nombre de jours à 0. Faîtes juste attention à inscrire ces lignes avant la fameuse ligne “/* That’s all, stop editing! Happy publishing. */”.

Ces manipulations peuvent être utiles pour réduire le nombre de lignes inutiles en base de données et donc les requêtes elles aussi inutiles qui pourraient peser sur la mémoire de votre WordPress.

Libérez-vous des contraintes pour vous et vos visiteurs

Justement, la mémoire, parlons-en ! Souvent, c’est votre hébergeur qui fixe le plafond de la mémoire allouée par le serveur à votre site web. Mais, dans certains cas, vous pouvez avoir la main dessus. Si vous recevez un message du type “Allowed memory size of 640000 bytes exhausted”, par exemple. Si vous en avez la possibilité, vous pouvez donc augmenter la mémoire PHP allouée et éviter ce type de message.

/** AUGMENTE LA MEMOIRE WP */
define( 'WP_MEMORY_LIMIT', '512' );
define( 'WP_MAX_MEMORY_LIMIT', '1024');

Les paramètres ci-dessus attribueront jusqu’à 512Mo de RAM par script PHP pour les processus générés à partir du frontend de WordPress, tandis que les scripts liés à l’administration à partir du tableau de bord backend pourront utiliser jusqu’à 1024Mo de RAM.

Encore une fois, faîtes bien attention à inscrire ces lignes avant la fameuse ligne “/* That’s all, stop editing! Happy publishing. */”.

D’autre part, le fichier wp-config propose d’autres fonctionnalités avancées liées à la performance. Si vous avez installé un plugin de cache, vous trouverez peut-être cette ligne.

define( 'WP_CACHE', true );

Contrairement à ce que l’on pourrait croire, elle n’active pas un éventuel cache de WordPress. Elle permet surtout aux divers plugins de cache de fonctionner. Toutefois, elle permet aussi de prendre en compte les divers réglages de cache que vous pourriez inscrire dans le fichier .htaccess. Oui, je parle bien du troisième fichier pilier de votre installation. De même, de nombreuses optimisations avancées permettent d’augmenter la vitesse de l’administration et réduire les requêtes vers la base de données. Mais ça, ce sera sûrement pour une autre fois.

Tout un panel d’options spécifiques à WordPress…

Base de données, sécurité, performance… Voici les trois principales utilités du fichier wp-config. Toutefois, c’est aussi là que vous pourrez modifier de nombreux aspects de l’environnement WordPress. En effet, en vous familiarisant un peu avec le PHP, vous pourrez vous passer d’un plugin de traduction standard avec la constante WP_LANG. Si, avec ça, je ne vous donne pas envie de simplement vous pencher sur la question…

D’autre part, c’est là que vous pourrez activer WordPress Multisite si besoin. D’ailleurs, si vous souhaitez savoir comment faire, je vous invite à suivre ce très bon tuto. Ensuite, c’est toujours dans ce fichier que vous pourrez opérer les divers réglages et fixer les potentiels bugs. Et par “bugs”, j’entends notamment les conflits qui peuvent apparaître avec les cookies. Car oui, le wp-config.php est aussi l’endroit où définir les constantes liées aux cookies.

…dont celles qui peuvent vous sauver la vie !

Plus haut dans cet article, je vous ai parlé des erreurs. Mais il ne s’agit que d’une erreur parmi tant d’autres ! Consultez seulement cet article pour vous en rendre compte. Cependant, une erreur peut avoir plusieurs causes. D’où l’intérêt de pouvoir en cibler l’origine quand elle se présente. Et, encore une fois, c’est le fichier wp-config qui va nous le permettre. En effet, dans une installation nouvelle de WordPress, une ligne est générée automatiquement juste avant le fameux commentaire “/* That’s all, stop editing! Happy publishing. */”. Il s’agit de celle-ci.

define( 'WP_DEBUG', false );

Remplacez “false” par “true” et rendez-vous sur votre site web. Logiquement, au-dessus de l’en-tête, une liste de toutes les erreurs devrait s’afficher. Ensuite, vous n’avez plus qu’à résoudre les problèmes en vous rendant aux endroits indiqués. Toutefois, n’oubliez pas de repasser la valeur à “false” une fois l’opération terminée. Et je ne vous conseille pas cela seulement pour des raisons esthétiques. En effet, étant donné que tout le monde peut voir cette liste, cet outil magique peut vite devenir une faille de sécurité irrattrapable.

 

functions.php : le coeur de votre thème WordPress

Contrairement au fichier wp-config, functions.php ne se trouve pas à la racine de votre installation WordPress. D’ailleurs, on ne peut pas vraiment dire qu’il soit indispensable au fonctionnement de WordPress en lui-même. En revanche, il l’est pour celui de votre site web ! Pourquoi ? Parce qu’il est obligatoire dans la bonne marche d’un thème. Pas de functions.php ? Pas de thème ! Pas de thème ? Pas de site web ! CQFD…

En effet, functions.php est l’un des deux fichiers obligatoires à mettre dans un thème. Ce tutoriel sur la façon de créer un thème enfant vous le montre très simplement.

Ainsi, pour le trouver, vous avez juste à ouvrir le répertoire contenant votre thème dans wp-content → themes.

Nota : un autre moyen d’intervenir sur ce fichier simplement et sans risque, c’est d’utiliser le plugin gratuit Code Snippets. Ce dernier supprime la nécessité d’ajouter des extraits personnalisés directement dans le fichier de votre thème functions.php.

Functions.php : le pilier de votre thème WordPress

Le fichier functions.php se trouve à la racine de votre thème.

Qu’est-ce que le functions.php concrètement ?

Au-delà d’être le pilier incontournable de votre thème, à quoi sert ce fameux functions.php ? Eh bien, pour faire simple, il permet d’ajouter ou retirer des fonctionnalités à votre thème. C’est pour cette raison que l’on dit souvent qu’il fonctionne comme un plugin. D’ailleurs, si vous êtes à l’aise avec le PHP, ce fichier vous permet même, dans une bonne partie des cas, d’importer du code de vos plugins pour le personnaliser sans craindre les mises à jour de l’extension en question. Même si certains plugins sont plus récalcitrants que d’autres…

Personnaliser WordPress ? C’est dans le functions.php !

Toutefois, pas besoin de plugin préinstallé pour ajouter des fonctionnalités via le fichier functions ! En effet, certaines lignes de code peuvent très bien se substituer à un plugin existant. Et, vous commencez à me connaître, c’est quelque chose que je trouve très intéressant ! Prenons un exemple simple et concret : l’éditeur classique de WordPress. Celui-ci a disparu avec la mise à jour de WordPress 5.0 au profit de Gutenberg. Et même si certains tutos très bien faits ont permis de se familiariser avec, nous sommes encore nombreux à préférer l’ancien éditeur. Pour cela, un plugin existe : Classic Editor. Mais on peut très bien s’en passer avec cette simple ligne à inclure à la suite dans le functions.php.

add_filter('use_block_editor_for_post', '__return_false', 10);

Ainsi, si vous vous mettez en tête de vous passer de certains plugins, les “bouts de code” que vous trouverez seront, sauf mention contraire, à mettre dans ce fichier. Les possibilités sont pratiquement illimitées. D’ailleurs, je vous en ai déjà exposées certaines comme la possibilité de générer des tailles d’images personnalisées. De plus, sachez que la personnalisation peut même concerner votre panneau d’administration avec, par exemple, l’ajout de colonnes pour les listes de vos articles, de  vos pages ou mêmes de vos utilisateurs.

Un fichier aussi là pour agrémenter WordPress

Cependant, la personnalisation via le fichier functions ne s’arrête pas seulement à WordPress. Du moins à ses fonctionnalités propres. En effet, le fichier est aussi propice à ajouter des modules extérieurs à notre CMS préféré. Et c’est encore l’occasion de se passer de l’ajout de plugins. Je pense notamment à l’ajout de la bibliothèque Font Awesome ou du script Tarteaucitron.js.

D’ailleurs, ceci est valable pour toutes les bibliothèques ou scripts.

Des fonctionnalités de sécurité simples mais très utiles…

Mais comme le wp-config.php, le fichier functions.php peut recevoir des ajouts de sécurité non-négligeables. Ces ajouts sont d’ailleurs incontournables au point de figurer, pour certains, dans la liste des 15 réglages de sécurité déjà éditée sur WPFormation ! Parmi eux, je pense notamment à la suppression du numéro de version de WordPress ou au fait de masquer les causes des erreurs de connexion aux utilisateurs.

Vous l’aurez compris, ces réglages de sécurité consistent surtout à cacher un maximum d’informations à ceux qui crawleraient votre site web. Car plus on en sait sur votre WordPress, plus celui-ci est vulnérable. En ce sens, vous pouvez encore être plus discret. En effet, vous pouvez aussi supprimer les versions de vos fichiers CSS et JS avec cette fonction.

function remove_ver_css_js( $src ) {
 if ( strpos( $src, 'ver=' . esc_url(get_bloginfo( 'version' )) ) )
  $src = remove_query_arg( 'ver', $src );
 return $src;
}
add_filter( 'style_loader_src', 'remove_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'remove_ver_css_js', 9999 );

Quand vous vous serez familiarisé avec le fonctionnement du fichier et des fonctions, vous serez même en mesure de cacher les plugins que votre WordPress possède au sein même de votre panneau d’administration !

… et des réglages de performance très efficaces !

Mais en attendant, passons aux optimisations que vous pouvez opérer en terme de performance. Elles consistent surtout à retirer des fonctionnalités de WordPress natives qui ne vous seront pas utiles. Je vous ai listé ci-dessous une liste non-exhaustive de ces fonctionnalités.

remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'feed_links_extra', 3 );
remove_action('wp_head', 'feed_links', 2 );
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action('wp_head', 'index_rel_link' );
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

D’ailleurs, on peut ajouter à cette liste la suppression de WPembed, qui est maintenant intégré directement dans le noyau, avec ces quelques lignes !

function my_deregister_scripts() {
 wp_dequeue_script( 'wp-embed' );
}
add_action( 'wp_footer', 'my_deregister_scripts' );

Enfin, votre extension de cache se charge sûrement de désactiver les emojis sur votre WordPress. Ces petites icônes chargent des scripts inutiles qui nuisent à la performance de votre site web. Sachez que cette option peut être intégrée directement dans le functions.php avec un combo de fonctions relativement complexe.

functions.php : un plugin ou des fonctions ?

Je vous ai peut-être perdu sur un point en vous exposant les possibilités du functions.php. Il fonctionne comme un plugin mais n’est pas un plugin ? On peut y inclure des fonctions ? Alors, je vous le dis tout de suite : arrêtez de cogiter ! Il est plutôt important de vous familiariser avec ces mots et peut-être même la structure globale des codes que vous voyez. Ainsi, au fur et à mesure que vous progresserez avec WordPress, ces mots et ces codes ne vous seront pas inconnus au point peut-être de tenter de les manier à votre tour. Après tout, nous sommes tous passés par là…

Comme vous l’aurez (re)découvert dans cet article, les fichiers wp-config.php et functions.php sont de vraies mines d’or pour optimiser votre WordPress. Vous pouvez les laisser tranquille mais les utiliser est une opportunité de rendre votre site web plus qualitatif. En effet, ces fichiers permettent de sécuriser votre installation et de la rendre plus performante. Le tout de façon optimisée puisque cela vous dispense de recourir à des extensions souvent plus lourdes.

Je vous encourage à vous familiariser avec. Pensez juste à sauvegarder chacun d’eux pour éviter qu’une mauvaise manipulation ne ruine votre travail. Ensuite, testez les quelques lignes que je vous ai proposées dans cet article. Vous verrez que c’est un bon entraînement avant de, peut-être, passer à la vitesse supérieure en allant visiter divers forums.

Découvrez également notre liste des meilleurs snippets WordPress pour booster votre site.

Et vous, avez-vous sauté le pas et customisé vos wp-config.php et functions.php ?
Dîtes-le nous en commentaire !

wpformation
NE MANQUEZ PLUS RIEN !
Inscrivez-vous pour recevoir le meilleur de WordPress dans votre boîte de réception, chaque mois.

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

A propos de l'auteur...

Avatar de Maxime Malfoy

Maxime Malfoy

Journaliste de formation, j'ai créé mon propre média en 2017. J'ai donc dû me former et me perfectionner à la création de sites web et de contenus. Si l'expérience ne s'est pas avérée concluante, j'ai tout de même énormément appris au point d'être aujourd'hui développeur WordPress et content manager freelance.

1 commentaire

  • Bonjour,
    Wordpress est une base super pour beaucoup de choses.
    quelques soit la direction que prennent les événements.
    il aurait peux-être été intéressant de parler des problème de ces fichiers lorsqu’on désire mettre un site en multilingue.
    surtout le fichier des fonctions qui demande plus d’attention.

    je me suis finalement diriger vers WPML qui reste à ce jour plus simple à mettre en oeuvre de manière efficaces pour les clients.