Vous êtes sur la page 1sur 32

Deuxième édition de septembre 2018

Julio Potier – https://boiteaweb.fr

Tous les secrets du 


wp-config.php 
Ceci est une prévisualisation du livre qui compte 145 pages et est
disponible à cette adresse :
http://bit.ly/tous-les-secrets-du-wp-config-php

Merci pour votre soutient !

   

2
   

3
Introduction  
L'auteur  
Je suis ​Julio Potier​, Consultant en Sécurité Web, Ingénieur et
Formateur WordPress, créateur de l'extension de Sécurité WordPress
SecuPress​.

J'ai choisi WordPress en 2009 pour sa flexibilité et facilité de


création d'extensions. J'en développe tous les jours, pour moi ou pour
des clients. J'aime partager mon savoir, j'aime aller plus loin, je me pose
toujours pleins de questions et n'hésite pas à tout remettre en cause.
J'ai sûrement bu de l'eau venant de "La Fontaine du Doute", enfin, je
pense que c'était elle, ça je n'en suis pas sûr…

Où me trouver :
● Dans mon bureau devant mon PC,
● Sur mon blog technique sur lequel je crée des articles relatifs au
développement sous WordPress : ​http://www.boiteaweb.fr
● Sur le Slack de WordPress-fr : ​https://wordpressfr.slack.com/
● Sur le site de SecuPress : ​http://www.secupress.pro
● Sur Twitter : ​@boiteaweb​ et ​@SecuPress
● En invité sur quelques blogs WordPress comme GeekPress.fr,
WPChannel.com, ScreenFeed.fr, WPFormation.com …

Pourquoi ce livre ?  


Avril 2013, mois de la sortie de WordPress 3.6, j'ai voulu
répertorier et tester toutes les constantes possibles contenues dans
WordPress et aller au delà du codex qui nous informe sur les constantes
les plus utilisées. J'ai trouvé plus de 160 constantes utiles et je les ai
toutes testées. J'ai décidé d'écrire ces pages afin que tout le monde
puisse tirer le meilleur potentiel de son site WordPress, ce fichier de

4
configuration ​wp-config.php​ ne doit plus avoir de secret pour vous après
la lecture de ce livre.

Réédition de septembre 2018​ : Un peu de plus 5 ans après la


vente de cet ebook, je décide de le mettre à jour. J'ai trié les constantes
pour supprimer celles qui étaient dépréciées depuis trop longtemps
(mais j'ai laissé les plus récentes comme WPLANG, quoi, vous ne saviez
pas ?). Aussi je n'ai pas ajouté celles qui n'ont aucun intérêt à être
connu ni qui ne pourrait servir pour du développement + un article du
blog, le ​guide des constantes​.

Pour qui ce livre ?  


Ce livre est donc destiné à tout utilisateur de WordPress
sachant modifier son fichier de configuration, c'est-à-dire le fichier
wp-config.php​ à la racine de son site. Vous n'avez pas forcément besoin
d'être un développeur pour lire et comprendre ce livre, vous pouvez
aisément copier/coller et adapter à votre besoin.

En même temps, il est aussi destiné aux développeurs de


plugins et de thèmes, aux créateurs d'astuces et de hacks en tout genre.
Il contient des morceaux de codes et parfois cela parle un peu plus
technique, mais surtout pour la compréhension du pourquoi et du
comment.

Que contient ce livre ?  


En grande partie, des constantes, un peu plus de 160. Des
constantes WordPress mais aussi en bonus des constantes PHP car, que
serait WordPress sans le PHP : rien !

J'ai créé un ​Guide complet sur les constantes PHP​33​ sur mon blog
qui vous aidera encore. Je parle aussi du fichier ​wp-config.php​ lui même.
Comment fonctionne-t-il, que fait-il là, que peut-on en faire etc.

5
Comment lire ce livre ?  
Les constantes forment la plus grande partie de ce livre. Elles
sont toutes formatées de la même façon, celle-ci :
NOM DE LA CONSTANTE 
Type :​ string - ​Valeur par défaut ​: "chaîne"
Description :​ Courte description.
Explications longues contenant d​ es mots​ inclus dans le
code. Et aussi des morceaux plus complet comme :
<?php​ ​echo ​'Snippet de code PHP sur fond gris police
"Consolas"'​; ​// Commentaire ​?>

Les types de constantes (oui, une constante n'est pas typée je


sais) que vous pourrez rencontrer sont :
● string : Chaîne de caractères quelconque.
● bool : Valeur booléenne, soit vrai (TRUE) soit faux (FALSE).
● integer : Nombre entier.
● octal : Nombre octal.
● null : le fait de déclarer cette constante l'active, peu importe sa
valeur.

Viennent ensuite dans le texte quelques mots qui ont un formatage


particulier :
● Les ​noms-de-fichiers.php​ sont stylés en italique et toujours avec
leur extension,
● Les ​noms_de_fonctions()​ sont stylés en italique avec leur deux
parenthèses,
● Les noms des hooks filtres et actions sont notés ​"filtre"​ et
"action"​ en plus d'être précisés,
● Les nombres en exposant comme le zéro sur le dernier mot de
cette phrase par exemple qui vous invite à visiter le Lexique​0​ en
fin de livre.

6
7
   

8
   

9
Le fichier wp-config.php  
Car c'est tout de même de lui dont on parle ici, ce fichier de
configuration, nous l'appellerons comme ça dans le reste du livre :
"fichier de configuration".

Avant de le modifier je vous conseille de faire une sauvegarde en


local de votre version actuelle, si vous sauvegardez online, gardez
l'extension .php, évitez les .old et .bak qui sont des fichiers texte et
deviennent lisible aux yeux de tous.

Ensuite quand vous ajouterez une constante, ajouter aussi un


commentaire ainsi que la date d'ajout. Cela vous permettra de vous
souvenir du but de cette constante, pourquoi vous l'aviez entrée avec
telle ou telle valeur et depuis quand. Si jamais vous vous rendez compte
que quelque-chose semble boguer depuis X semaines, vous pourrez alors
aller vérifier si cela coïncide avec un ajout d'une constante.

Si vous devez supprimer une constante, je vous conseille plutôt


de la commenter en ajoutant "//" devant la ligne puis la date de cette
désactivation pour la même raison d'une possible découverte d'un bogue
plus tard, vous saurez quelle constante a été désactivée et quand.

Attention, certaines constantes ne doivent plus être modifiées


sur un site en production au risque d'avoir des erreurs 404 ou pire. Aussi
n'activez pas de mode deboguage en production.

   

10
1. Déplacer le fichier de configuration  

a. Façon hiérarchique 

Saviez-vous que le fichier ​wp-config.php​ pouvait être remonté


d'un cran dans son arborescence ? Et bien maintenant vous savez. Il y a
deux conditions à respecter pour que cela fonctionne correctement :
● Votre configuration PHP doit permettre à WordPress de
naviguer un cran plus haut que le dossier d'installation, ceci se
fait dans le paramètre o​ pen_basedir​ de ​php.ini​. Ce paramètre
peut être redéfini grâce à un ​ini_set()​ et vaut par défaut
quelque chose comme /​ host/public_html/www/​. Il faut plutôt
utiliser /​ host/public_html/​.
● Le dossier se trouvant un cran plus haut ne doit pas, lui, être
une autre installation de WordPress, sinon ce second
WordPress devrait avoir 2 fichiers de configuration, bref
impossible.
Personnellement sur un aspect sécurité c'est excellent puisque
le fichier n'est pas accessible depuis votre site !

Si votre installation se trouve ici dans [www] alors, si la


configuration PHP le permet, vous pouvez déplacer votre fichier de
configuration dans /​ public_html/​ car la racine de votre site, accessible
depuis l'extérieur, est /​ www/​ et non pas /​ public_html/​.

Si votre seconde installation se trouve dans [example.com],


vous ne pouvez plus déplacer son fichier, car le cran supérieur dans
l'arborescence serait alors /​ www/​. Cette première installation n'irait plus
chercher un cran plus haut puisqu'elle trouverait un fichier de
configuration à son niveau, mais ce n'est pas le sien !
Vous devez donc soit avoir une seule installation par /​ www/​, soit
avoir une installation dans des doubles dossiers.

Dans le premier ​/www/​ ne se trouve aucune installation, que des

11
dossiers contenant d'autres installations. Ce /www/ ne doit pointer vers  
3. Des astuces en plus  

a. Au diable ABSPATH 

Allez, au diable ​ABSPATH​, cette constante présente dans votre


fichier de configuration, vers la fin du fichier vous devriez avoir ceci :
if ( !​defined​(​'ABSPATH'​) )
​define​(​'ABSPATH'​, ​dirname​(__FILE__) . '/');

Et bien sachez que vous pouvez supprimer ces 2 lignes, si si


vraiment. En fait elles datent du temps où le fichier ​wp-config.php
pouvait servir de bootstrap​5​ mais cela a été déprécié. Par contre, on a
laissé cette ligne pour des raisons de rétro-compatibilité. Entre nous, si
vous utilisez un code qui utilise ​wp-config.php​ comme bootstrap,
changez de crémerie.
ABSPATH​ est déjà défini dans le fichier ​wp-load.php​ qui est lui
forcément chargé...

b. Au diable les clés de sécurité 

Non je ne suis pas fou, je les supprime de ce fichier, je suis assez


paranoïaque par déformation professionnelle, et je ne préfère pas
laisser traîner ces clés qui rendraient mon site vulnérable à une faille
CSRF​6​. Je les déplace ailleurs. Je l'ai expliqué plus haut, vous pouvez
jouer avec des inclusions de fichiers etc, mais je vais encore plus loin.

Avant, je les supprimais car je savais que WordPress, ne les


trouvant pas, irait lui mêmes les ajouter en base de données. Ça me
paraissait déjà pas mal de cacher mes clés, introuvables dans mon
fichier de config. Mais cela m'a posé 2 problèmes. Le premier est que la
page /wp-admin/options.php reprends un maximum d'option du site et
ces clés sont modifiables et donc trouvables ici, ça je ne veux pas. Et
l'autre problème vient d'une hypothétique faille d'injection SQL qui
12
pourrait alors lire mes clés ... Oui, je suis parano merci.
fichiers PHP de vos plugins et thèmes s'ils n'ont pas à être
interprétés directement par le navigateur mais plutôt inclus par et dans
WordPress :
<?php​ ​defined( ​'ABSPATH' ​) || ​die( ​'You don&#8217;t have
permission to do this.'​ ); ​// chargement direct interdit

Ce code vérifie que la constante ​ABSPATH​ existe grâce à la


fonction PHP ​defined()​ et dans le cas où ​FALSE​ est retourné, un ​die()​ est
lancé afin de stopper la lecture du fichier.

WPINC 
Type :​ string - ​Valeur par défaut​ : "​wp-includes​"
Description ​: Contient le nom du dossier des inclusions du core de WP

WP_CONTENT_DIR 
Type :​ string - ​Valeur par défaut​ : "​ABSPATH . 'wp-content'​"
Description ​: Contient le chemin absolu vers le dossier des contenus
WordPress.

Ce dossier contient habituellement et par défaut les langues, les


thèmes, les plugins, les uploads, le cache. Les plugins ajoutent parfois
d'autres dossiers comme les sauvegardes ou des dossiers personnels
contenant leur configuration ou leur propre contenu de médias.
Si vous souhaitez modifier ce chemin pour mettre "wp-contenu",
déclarez W​ P_CONTENT_DIR​ comme suit :
define​( ​'WP_CONTENT_DIR'​, ABSPATH . ​'wp-contenu'​ );

Attention, la modification de ce chemin peut empêcher certains


plugins de fonctionner car si leur auteur n'utilise pas ces constantes
mais entre dans le code le chemin par défaut, c'est évidemment une
"​Erreur 404, page non trouvée"​ qui ressortira.

   
13
WP_CONTENT_URL 
Type :​ string - ​Valeur par défaut​ : "​get_option( 'siteurl' ) .
'/wp-content'​"
Description ​: Contient l'URL vers le dossier des contenus WordPress.

Cette constante va de pair avec ​WP_CONTENT_DIR​ et elles


doivent être cohérentes entre elles. Si vous aviez modifié ce chemin
pour mettre "wp-contenu", déclarez W​ P_CONTENT_URL​ comme suit :
define​( ​'WP_CONTENT_URL'​, get_option( ​'siteurl'​ ) .
'wp-contenu'​ );

Attention, comme pour ​WP_CONTENT_DIR​ la modification de


cette URL peut empêcher certains plugins de fonctionner car si leur
auteur n'utilise pas ces constantes mais entre dans le code l'URL par
défaut, c'est évidemment une "​Erreur 404, page non trouvée"​ qui
ressortira.

WP_HOME 
Type :​ string - ​Valeur par défaut​ : ​aucune
Description ​: Contient l'URL de l'accueil de votre site.

Une option existe dans WordPress, c'est "home". Mais si cette


constante est définie, elle prends le pas que cette option et la remplace.

Il est conseillé d'utiliser la constante et non pas l'option. Déjà,


imaginez que vous ou un de vos clients soit en train de modifier ces
valeurs "​pour voir ce que ça fait"​ . Le risque qu'il se retrouve avec un site
front-end et back-end inutilisable est énorme.

Niveau sécurité, si le compte admin se fait corrompre de


quelques manières que ce soit ou qu'une faille quelconque réussisse à
modifier cette option, alors l'attaquant peut mettre son site de
phishing​9​ à la place du votre.

14
Puis comme son site reçoit de la requête de la part du votre, il
prends la main et redirige la page sur SON url, votre site s'est fait
remplacer par un clone dans un pays de l'est, aïe. Le fait d'utiliser les
constantes empêche cette option d'être modifiée.

Exemple d'utilisation :
define​( ​'WP_HOME'​, ​'https://www.example.com'​ );

WP_SITEURL 
Type :​ string - ​Valeur par défaut​ : ​aucune
Description ​: Contient l'URL de votre site incluant le sous-dossier s'il
existe.

Une option existe dans WordPress, c'est "siteurl". Mais si cette


constante est définie, elle prends le pas que cette option et la remplace.
Il est conseillé là aussi d'utiliser la constante et non pas l'option pour les
mêmes raisons que ​WP_HOME​.

La différence entre les 2 options est parfois obscure et la


question revient souvent, voici enfin la réponse : Vous pouvez avoir une
installation dans un sous-dossier "/wordpress/" tout en gardant un
accueil sur la racine du site. Dans ce cas, les 2 options seront différentes
car W​ P_HOME​ sera l'url "racine", l'accueil des visiteurs, là où W​ P_SITEURL
sera l'url du sous-dossier, celui contenant les fichiers de l'installation.

Voici 2 exemples pour comprendre :


// pour un site sous /host/www/wordpress/
define​( ​'WP_SITEURL'​, ​'https://example.com/wordpress'​ );
// pour un site sous /host/www/
define(​ ​'WP_SITEURL'​, ​'https://example.com'​ );

   

15
8. Les constantes des crons 
Un cron est un programme qui permet aux utilisateurs des
systèmes Unix d'exécuter automatiquement des scripts, des commandes
ou des logiciels à une date et une heure spécifiées à l'avance, ou selon
un cycle défini à l'avance. (Source : Wikipédia)

a. Les constantes des crons 

DISABLE_WP_CRON 
Type :​ bool - ​Valeur par défaut :​ "FALSE"
Description : Permet de désactiver totalement les crons WordPress.

Il suffit de mettre ​TRUE​ afin d'interdire à WordPress d'utiliser


ses crons. Attention, ces crons permettent entre autres à WordPress de
publier vos publication planifiées, ne désactivez que si vous savez ce que
vous faites !
define​( ​'DISABLE_WP_CRON'​, TRUE );

ALTERNATE_WP_CRON 
Type :​ bool - ​Valeur par défaut :​ "FALSE"
Description ​: Utilisé dans le cas où vos publication planifiées ne sont pas
visibles en temps voulu.

Une fois mis à ​TRUE​, cette constante utilise l'alternative de la


redirection discrète avec un paramètre en méthode GET pour le visiteur
plutôt qu'un envoi de formulaire en méthode POST.
À n'utilisez que si vos publications planifiées ne se passent pas
correctement car cette solution est parfois hasardeuse, une véritable
bonne solution de création de Cron Web​19​ serait de passer via votre
hébergement et ne pas le faire via WordPress. Un appel régulier sur
wp-cron.php​ suffit.
define​( ​'ALTERNATE_WP_CRON'​, ​TRUE ​);

16
Les constantes PHP   
Au delà de WordPress il y a le PHP, PHP c'est quoi : de son
ancien nom "Personal Home Page" devenu "PHP: Hypertext
Preprocessor", il s'agit d'un langage de scripts libre principalement
utilisé pour produire des pages Web dynamiques via un serveur HTTP.

Je ne vais pas vous lister toutes les constantes PHP, loin de là,
mais je vais vous en donner suffisamment pour que vous puissiez les
utiliser dans vos développements WordPress, espérant vous en
apprendre certaines !

Contrairement à WordPress, ces constantes ne sont pas à


définir, elles sont là pour être lues et utilisées dans vos développements
uniquement.

1. Des constantes prédéfinies  


PHP_VERSION 
Type :​ string
Description ​: La version courante de PHP sous la forme d'une chaîne de
caractères dans la notation "major.minor.release[extra]".

Vous pouvez utiliser la combinaison de cette constante avec


fonction version_compare() afin de vérifier et valider si votre
développement est compatible avec les fonctions utilisées.
<?php
if ​( ​version_compare​( ​PHP_VERSION​, ​'7.0'​ ) === -1 ) {
​die​( ​'Ce plugin requiert PHP 7.0 minimum'​ );
}

   

17
define(), constant() et compagnie  
Le guide complet  
Il devient rare qu’une extension, un thème, ou un projet PHP ne
contienne pas de constantes PHP. Vous en utilisez surement aussi. Voici
quelques subtilités qui devraient vous laisser perplexe, je vais non
seulement jouer avec le code mais aussi avec les versions PHP pour
nous rappeler à tous que la rétrocompatibilité est toujours au
rendez-vous.

Rappel  
Une constante, à l’opposé d’une variable, est constante est ne
peut pas varier. J’ai l’impression de me répéter. La constante ne pourra
donc jamais être modifiée en cours de script alors qu’une variable a pour
but de pourvoir varier, et même exister ou non. Une constante ne peut
pas non plus être supprimée.
Dans ce chapitre je ne vais retourner plus loin que PHP 5.0, c’est
déjà pas mal, et trop à la fois.

define()  
La façon la plus courante et la plus connue pour déclarer une
constante.

// Déclaration de la constante "FOO"


define​( ​'FOO'​, ​'bar'​ );

On écrit habituellement les constantes en majuscules, ce qui


permet à la lecture du code de les repérer facilement, leur lecture est
relativement simple :

var_dump​( ​FOO​ );
// string(3) "bar"

18
Sachez qu’il est possible de définir une constante dans une  

19
Table des matières  
Introduction 5
L'auteur 5
Pourquoi ce livre ? 5
Pour qui ce livre ? 6
Que contient ce livre ? 6
Comment lire ce livre ? 7

Le fichier wp-config.php 11
1. Déplacer le fichier de configuration 12
a. Façon hiérarchique 12
b. Façon inclusion 13
2. Protéger le fichier de configuration 14
a. La façon Apache/Nginx 14
b. La façon chmod 15
3. Des astuces en plus 16
a. Au diable ABSPATH 16
b. Au diable les clés de sécurité 16
4. Le fichier wp-config-sample.php 17
5. Une globale 18
$TABLE_PREFIX 18

Les constantes WordPress 21


1. Les constantes des chemins WordPress 21
a. Les chemins de base 21
ABSPATH 21
WPINC 22
WP_CONTENT_URL 23
WP_HOME 23
WP_SITEURL 24
RELOCATE 25

20
WP_TEMP_DIR 25
ENVIRONMENT 26
STATICPATH 27
b. Les chemins de langues 27
WP_LANG_DIR 27
c. Les chemins des extensions 28
WP_PLUGIN_DIR 28
WP_PLUGIN_URL 28
WPMU_PLUGIN_DIR 28
WPMU_PLUGIN_URL 29
d. Les chemins des thèmes 29
TEMPLATEPATH 29
STYLESHEETPATH 30
d. Les autres chemins 31
GETID3_TEMP_DIR 31
2. Les constantes WordPress utiles 31
a. Les constantes de temps humainement lisibles 31
MINUTE_IN_SECONDS 31
HOUR_IN_SECONDS 31
DAY_IN_SECONDS 31
WEEK_IN_SECONDS 31
MONTH_IN_SECONDS 31
YEAR_IN_SECONDS 32
b. Les constantes de poids humainement lisibles 32
KB_IN_BYTES 32
MB_IN_BYTES 32
GB_IN_BYTES 32
TB_IN_BYTES 32
c. Les constantes diverses 32
WP_MAX_MEMORY_LIMIT 32
WP_MEMORY_LIMIT 33
WPLANG ⚠ Dépréciée depuis WordPress 4.0. 33

21
SHORTINIT 34
RESET_CAPS 34
3. Les constantes d'administration 35
a. Les constantes de sécurité 35
FORCE_SSL_ADMIN 35
FORCE_SSL_LOGIN 35
DISALLOW_FILE_EDIT 36
DISALLOW_FILE_MODS 36
DISALLOW_UNFILTERED_HTML 36
b. Les constantes de développements 37
WP_ADMIN 37
WP_NETWORK_ADMIN 38
WP_USER_ADMIN 38
WP_BLOG_ADMIN 39
AUTOMATIC_UPDATER_DISABLED 39
WP_AUTO_UPDATE_CORE 39
IMAGE_EDIT_OVERWRITE 39
MEDIA_TRASH 40
d. Les constantes des utilisateurs 40
IS_PROFILE_PAGE 40
e. Les constantes des publications 41
WP_MAIL_INTERVAL 41
REST_API_VERSION 41
REST_REQUEST 41
XMLRPC_REQUEST 41
DOING_AUTOSAVE 42
DOING_AJAX 42
f. Les constantes des extensions 43
WP_UNINSTALL_PLUGIN 43
g. Les constantes inclassables 43
IFRAME_REQUEST 43
4. Les constantes de cookies 44

22
a. Les constantes de nommage 44
COOKIEHASH 44
TEST_COOKIE 45
AUTH_COOKIE 45
SECURE_AUTH_COOKIE 45
PASS_COOKIE 45
LOGGED_IN_COOKIE 46
USER_COOKIE 46
b. Les constantes des chemins des cookies 46
COOKIEPATH 46
SITECOOKIEPATH 47
ADMIN_COOKIE_PATH 47
PLUGINS_COOKIE_PATH 47
COOKIE_DOMAIN 47
5. Les constantes des clés de sécurité 48
a. Les constantes des clés de sécurité 50
AUTH_KEY 50
AUTH_SALT 50
SECURE_AUTH_KEY 50
SECURE_AUTH_SALT 50
LOGGED_IN_KEY 50
LOGGED_IN_SALT 51
NONCE_KEY 51
NONCE_SALT 51
SECRET_KEY & SECRET_SALT 51
6. Les constantes de thèmes 52
a. Les constantes de la personnalisation 52
BACKGROUND_COLOR 52
BACKGROUND_IMAGE 53
NO_HEADER_TEXT 54
HEADER_TEXTCOLOR 55
HEADER_IMAGE 55

23
HEADER_IMAGE_WIDTH 56
HEADER_IMAGE_HEIGHT 56
b. Les constantes inclassables 57
WP_USE_THEMES 57
WP_DEFAULT_THEME 57
7. Les constantes d'uploads 58
a. Les constantes des chemins des uploads 58
UPLOADBLOGSDIR 58
UPLOADS 58
BLOGUPLOADDIR 59
b. Les constantes de sécurité 60
ALLOW_UNFILTERED_UPLOADS 60
8. Les constantes des crons 61
a. Les constantes des crons 61
DISABLE_WP_CRON 61
ALTERNATE_WP_CRON 61
WP_CRON_LOCK_TIMEOUT 62
DOING_CRON 62
9. Les constantes du MultiSite 63
a. Les constantes du site courant 63
BLOG_ID_CURRENT_SITE 63
SITE_ID_CURRENT_SITE 63
DOMAIN_CURRENT_SITE 63
PATH_CURRENT_SITE 64
b. Les constantes d'activation du MultiSite 64
MULTISITE 64
WP_ALLOW_MULTISITE 64
ALLOW_SUBDIRECTORY_INSTALL 65
SUBDOMAIN_INSTALL 66
c. Les constantes d'entête HTTP 67
NOBLOGREDIRECT 67
WPMU_ACCEL_REDIRECT 67

24
WPMU_SENDFILE 68
d. Les constantes inclassables 68
SUNRISE 68
WP_INSTALLING_NETWORK 69
DIEONDBERROR 69
ERRORLOGFILE 70
10. Les constantes pour les publications 70
a. Les constantes de sauvegarde 71
AUTOSAVE_INTERVAL 71
WP_POST_REVISIONS 71
DOING_AUTOSAVE 72
EMPTY_TRASH_DAYS 72
WP_LOAD_IMPORTERS 73
COMMENTS_TEMPLATE 73
11. Les constantes d'optimisation 73
a. Les constantes des fichiers statiques 74
COMPRESS_CSS 74
COMPRESS_SCRIPTS 74
CONCATENATE_SCRIPTS 74
ENFORCE_GZIP 75
b. Les constantes de mises à jour 75
CORE_UPGRADE_SKIP_NEW_BUNDLED 75
DO_NOT_UPGRADE_GLOBAL_TABLES 76
c. Les constantes de sécurité 76
WP_FEATURE_BETTER_PASSWORDS 76
12. Les constantes de débogage 77
a. Les constantes de débogage 77
WP_DEBUG 77
WP_DEBUG_DISPLAY 77
WP_DEBUG_LOG 78
SCRIPT_DEBUG 78
ERRORLOGFILE 79

25
13. Les constantes du FTP 79
a. Les constantes de base 79
FTP_HOST 79
FTP_USER 80
FTP_PASS 80
b. Les constantes des chemins 80
FTP_BASE 80
FTP_CONTENT_DIR 80
FTP_PLUGIN_DIR 81
FTP_LANG_DIR 81
c. Les constantes avancées 81
FS_METHOD 81
FS_CONNECT_TIMEOUT 82
FS_TIMEOUT 82
FTP_SSL 82
FTP_SSH 83
FTP_PUBKEY 83
FTP_PRIKEY 83
FTP_FORCE 84
FS_CHMOD_DIR 84
FS_CHMOD_FILE 84
CRLF 85
14. Les constantes de base de données 85
a. Les constantes de base 85
DB_HOST 85
DB_NAME 85
DB_USER 86
DB_PASSWORD 86
DB_CHARSET 86
DB_COLLATE 87
DIEONDBERROR 87
b. Les constantes avanceés 87

26
CUSTOM_USER_TABLE 87
CUSTOM_USER_META_TABLE 88
SAVE_QUERIES 88
MYSQL_NEW_LINK 89
MYSQL_CLIENT_FLAGS 90
c. Les constantes des outils et de développements 90
WP_ALLOW_REPAIR 90
WP_REPAIRING 91
WP_IMPORTING 91
WP_INSTALLING 91
WP_SETUP_CONFIG 92
15. Les constantes de l'accès vers l'extérieur 92
a. Les constantes de sécurité 92
WP_HTTP_BLOCK_EXTERNAL 92
WP_ACCESSIBLE_HOSTS 93
b. Les constantes du proxy 93
WP_PROXY_HOST 93
WP_PROXY_PORT 93
WP_PROXY_BYPASS_HOSTS 94
WP_PROXY_USERNAME 94
WP_PROXY_PASSWORD 95
17. Les constantes de cache 95
WP_CACHE 95
DONOTCACHEPAGE 95
18. Les constantes non WordPress 96

Les constantes PHP 99


1. Des constantes prédéfinies 99
PHP_VERSION 99
PHP_INT_MAX 100
DIRECTORY_SEPARATOR 100
E_ALL 100
2. Des constantes magiques 101

27
__LINE__ 101
__FILE__ 101
__DIR__ 101
__FUNCTION__ 102
__CLASS__ 102
__METHOD__ 102

Exemple de fichier de config 105

define(), constant() et compagnie Le guide complet 109


Rappel 109
define() 109
const 117
defined() 121
constant() 124
Lecture de toutes les constantes 125
Constantes prédéfinies et réservées 126
Des bonnes pratiques 127
Différences entre define() et const 128

Table des matières 131

Notes, Références & Lexique 141

28
   

29
 
Tous les secrets de 
WordPress 

“​Tous les secrets de WordPress​”​ ​est une collection de


livres électroniques destinés aux amoureux de
WordPress. Que vous soyez utilisateur, rédacteur,
développeur, cette collection vous permettra de mieux
appréhender votre CMS favori.

“​Tous les secrets de WordPress​”​ est édité par ​Julio Potier​.


Deuxième édition, septembre 2018.

Un merci particulier à Gregory Viguier (​@ScreenFeedFR)​ qui a relu ce livre pour


corriger mes dernières boulettes.
Illustration et arrièreplan de couverture par ​Patrickss sur Freepik​.

À venir : ​Fonctions WP cachées, WP AJAX, WP Sécurité… 

30
https://creativecommons.org/licenses/by/2.0/fr/

31
32