Qu’est ce que le fichier wp-config.php

Le fichier wp-config.php est un fichier qui est situé à la racine de votre site WordPress, sur votre serveur, et permet de faire le lien entre la base de données et le site. Lors de l’installation de WordPress, il est créé avec un contenu standard; et il est recommandé de l’optimiser par rapport à vos besoins spécifiques. Vous pourrez alors configurer les aspects suivants:

  • Sécurité
  • Langue
  • Emplacement des dossiers
  • Gestion du contenu
  • Multisite (WordPress Mu)
  • Debug
  • Mémoire PHP
  • Performance
  • Compression des fichiers
  • Connexion FTP
  • Vérouillage de fonctionnalités

ATTENTION ! Avant de faire ces changements, faites un back up de vos fichiers (.htaccess et wp-config.php), pour pouvoir les restaurer en cas de problème.

Sécuriser le fichier wp-config.php

Une fois votre site créé et le fichier wp-config de base généré, la première chose à faire est de le sécuriser / protéger, en y interdisant l’accès. Pour cela, il faut modifier le fichier .htaccess (optimisé) à la racine de votre site, en ajoutant ces quelques lignes de code:

// Interdire l'accès au fichier wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files> 

Base du fichier wp-config standard

Lorsque le fichier est généré, il contient le minimum d’informations nécessaires pour faire le lien avec la base de données. Si ce n’est pas le cas, vous pouvez compléter:

/* MySQL paramètres */
define( 'DB_NAME',     'Nom_de_la_BDD' );
define( 'DB_USER',     'Nom_de_l_utilisateur' );
define( 'DB_PASSWORD', 'Mot_de_passe' );
define( 'DB_HOST',     'localhost' );
define( 'DB_CHARSET',  'utf8' );

/* Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');

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

/* MySQL Prefixe de table */
$table_prefix = 'wp_';

Les Clefs d’authentification

Les clefs d’authentification servent à assurer une meilleure sécurité des informations stockées dans les cookies des utilisateurs. Elles peuvent être générées ici: Générateur de clef.

/* Clefs d'authentification uniques */
define( 'AUTH_KEY',         'votre phrase cryptée ici' );
define( 'SECURE_AUTH_KEY',  'votre phrase cryptée ici' );
define( 'LOGGED_IN_KEY',    'votre phrase cryptée ici' );
define( 'NONCE_KEY',        'votre phrase cryptée ici' );
/* Uniquement pour une utilisation WordPress multisite */
define( 'AUTH_SALT',        'votre phrase cryptée ici' );
define( 'SECURE_AUTH_SALT', 'votre phrase cryptée ici' );
define( 'LOGGED_IN_SALT',   'votre phrase cryptée ici' );
define( 'NONCE_SALT',       'votre phrase cryptée ici' );

Les langues utilisées

Pour une meilleure optimisation, vous pouvez définir la langue (principale du site) ainsi que le répertoire contenant les autres version/traductions si c’est le cas sur votre site

/* WordPress langue du site */
define( 'WPLANG', 'fr_FR' );
define('LANGDIR', 'votre-dossier-de-langues');

Optimisation des révisions et du nettoyage

Par défaut, le mode “révision” est activé sur WordPress (pas de limite de versions) ce qui, dans la majorité des cas peut encombrer la base de données inutilement. Il est donc possible soit de désactiver cette fonction, soit de limiter les révisions. Profitez-en pour mettre en place le nettoyage automatique de la corbeille (définit en nombre de jour) et éventuellement augmenter l’intervalle des sauvegardes (définit en nombre de seconde).

/* Désactiver les révisions OU limiter leur nombre */
define( 'WP_POST_REVISIONS', 'false' );
OU
define( 'WP_POST_REVISIONS', '2' );
/* interval de sauvegardes automatiques */
define( 'AUTOSAVE_INTERVAL', '300' );

/* Nettoyage de la corbeille */
define( 'MEDIA_TRASH', true );
define( 'EMPTY_TRASH_DAYS', '7' );

Activation la fonction de mise en cache

Par défaut, la fonction de mise en cache de WordPress n’est pas activée. Une ligne de code permet de le faire:

/* WordPress Cache */
define( 'WP_CACHE', true );

Les règles et propriétés de mise en cache se gèrent dans le fichier .htaccess

Compression des fichiers

Il est possible d’activer la compression des fichiers (Scripts, CSS) et d’activer la compression Gzip, pour améliorer les performances:

/* Compression */
define( 'COMPRESS_CSS',        true );
define( 'COMPRESS_SCRIPTS',    true );
define( 'CONCATENATE_SCRIPTS', true );
define( 'ENFORCE_GZIP',        true );

La compression des fichiers se gère également depuis le fichier .htaccess

Augmenter la mémoire PHP

Pour augmenter les performances PHP, vous pouvez en changer les limites (par defaut 30M)

/* Memoire PHP */
define( 'WP_MEMORY_LIMIT', '30M' );
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

URL personnalisées

Si pour des raisons de sécurité, vous avez installé WordPress dans un autre dossier que la racine; ou que vous avez migré le site dans un autre dossier; vous pouvez diriger os visiteurs en spécifiant dans le fichier wp-config, l’URL et la page d’accueil du site

/* Redéfinir l'URL du site et la Homepage */
define( 'WP_SITEURL',     'http://www.votre-site.com' );
define( 'WP_HOME',        'http://www.votre-site.com' );
define( 'WP_CONTENT_URL', 'http://www.votre-site.com/wp-content' );
define( 'UPLOADS',        'http://www.votre-site.com/wp-content/uploads' );
define( 'WP_PLUGIN_URL',  'http://www.votre-site.com/wp-content/plugins' );
/* Si vous servez les cookies depuis un sous domaine */
define( 'COOKIE_DOMAIN',  'http://cookies.votre-site.com' );

Spécifier l’emplacement du thème et de la feuille de style

Pour améliorer légèrement les performances de votre site, il est possible de diminuer le nombre de requêtes PHP faisant appel à votre thème ou votre feuille de style, en ajoutant les lignes suivantes:

/*  Spécifier emplacement theme et CSS */
define('TEMPLATEPATH', '/wp-content/themes/votre-theme');
define('STYLESHEETPATH', '/wp-content/themes/votre-theme/dossier-de-feuille-de-style');

Activer la réparation automatique de la base de données

WordPress possède une fonction de réparation et optimisation de base de données qui n’est pas activée par défaut. plutôt que d’installer un plugin pour le faire, vous pouvez activer et utiliser cette fonction native.

/* Reparation automatique BDD */
define('WP_ALLOW_REPAIR', true);

Réparez ensuite votre BDD en allant sur l’URL: http://votre-site.com/wp-admin/maint/repair.php

Mettre en place une passerelle FTP

Si ce n’est pas fait par défaut par votre hébergeur, vous pouvez mettre en place une passerelle FTP:

/* FTP */
define( 'FTP_USER', 'Utilisateur_FTP' );
define( 'FTP_PASS', 'Mot_de_passe_FTP' );
define( 'FTP_HOST', 'Host_FTP' );

Changer la méthode d’upload des fichiers (thèmes et plugins)

Si vous uploadés / effacés très souvent des plugins (pour les tester) ou encore que vous changer de thème très régulièrement; et que vous trouvez le processus génant (entrer ses identifiants et mot de passe); vous pouvez le simplifier en mettant en place un upload direct:

/* Upload de fichiers direct */
define('FS_METHOD', 'direct');

Désactiver les éditeurs

par défaut, WordPress propose, dans l’administration, des éditeurs de thème et de plugin. Si vous développez des sites pour des clients en utilisant ce CMS, il se pourrait que vous ayez besoin de bloquer ces fonctions. Il est également possible d’empêcher / interdire l’installation de thèmes et de plugins. Cela peut se faire depuis le fichier wp-config.php:

/* Bloquer les editeurs */
define('DISALLOW_FILE_EDIT',true);
/* Interdire les installations */
define('DISALLOW_FILE_MODS',true);

Si vous ne voulez pas les bloquer mais simplement les masquer dans l’admin (et pouvoir y accéder en utilisant les liens directs), vous pouvez aussi le faire avec une fonction (dans un plugin ou dans le fichier functions.php de votre thème): Voir comment personnaliser l’administration WordPress

Activer WordPress Multisite

La fonctionnalité “multisite” de WordPress n’est pas activée par défaut. Pour accéder à cet environnement WordPress Mu, 2 lignes de codes suffisent:

/* Multisite. */
define( 'WP_ALLOW_MULTISITE', true );

Fonctions de Debug

Si vous développez un thème ou un plugin et que, durant votre phase de test vous devez débuger; vous pouvez activer cette fonctionnalité pour détecter les disfonctionnements (bugs).

/* WordPress mode Debug pour developpeurs */
define( 'WP_DEBUG',         true );
define( 'WP_DEBUG_LOG',     true );
define( 'WP_DEBUG_DISPLAY', true );
define( 'SCRIPT_DEBUG',     true );
define( 'SAVEQUERIES',      true );

Droits d’accès (CHMOD)

Si votre hébergeur impose des restrictions ou des droits d’accès trop stricts pour les fichiers et dossiers – que vous ne pouvez pas changer par le processus normal – vous pouvez contourner cela en utilisant le code suivant:

/* Modifier droits d'acces des fichiers */
define('FS_CHMOD_FILE', 0755);
define('FS_CHMOD_DIR', 0755);

Nouvel emplacement du dossier wp-content

Pour des raisons de sécurité ou d’optimisation, il se peut que vous deviez déplacer certains dossiers (wp-content, plugins); il faudra alors utiliser le fichier wp-config.php pour spécifier les nouveaux emplacements. ATTENTION ! Cette manipulation peut entrainer le disfonctionnement de certains plugins et certains thèmes, n’utilisez cette astuce que si vous savez ce que vous faites.

/* Déplacement de dossiers */
define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/sous-dossier/wp-content' );
define( 'WP_CONTENT_URL', 'http://example/sous-dossier/wp-content');
define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/sous-dossier/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://example/sous-dossier/wp-content/plugins');

Les liens utiles et complémentaires: