Comment se charge 
WordPress ? 
Le loading du core 
Julio Potier 
boiteaweb.fr 
@boiteaweb 
WPTech Nantes 2014
Bootstraps
Bootstraps 
wp-config.php 
index.php 
xmlrpc.php 
wp-blog-header.php 
wp-load.php 
wp-admin/index.php 
wp-admin/admin-post.php 
wp-admin/admin-ajax.php
Bootstraps 
wp-config.php 
● Déprécié, ne le faites plus.
Bootstraps 
index.php 
● Pour le front-end. 
● Le plus utilisé. 
● Rien à faire niveau code. 
● Destiné à ceux qui ont besoin d’un 
WordPress complet.
Bootstraps 
xmlrpc.php 
● Protocole XML-RPC 
● Permet de contrôler WP. 
● Utilisé par exemple pour les pings. 
● Sera remplacé par JSON REST API.
Bootstraps 
wp-blog-header.php 
● Pas de template chargé. 
● Constante "WP_USE_THEMES" non 
définie. 
● Vous chargez les plugins, la main 
query et toutes les APIs.
Bootstraps 
wp-load.php 
● Chargez toutes les APIs et les plugins. 
● Pas de thèmes, pas de main query. 
● Constante "SHORTINIT" possible : Pas 
toutes les APIs, pas de plugins, pas de 
traductions, pas de users, pas de front, 
etc
Bootstraps 
wp-admin/index.php 
● Pour le back-end. 
● Utilisé par WordPress. 
● Rien à faire niveau code.
Bootstraps 
admin-post.php 
● Utilisé par WordPress. 
● À utiliser pour lancer des requêtes non 
AJAX. 
● Ne faites pas votre propre bootstrap ! 
#hooks
Bootstraps 
admin-ajax.php 
● Utilisé par WordPress. 
● À utiliser pour lancer des requêtes 
AJAX. 
● Ne faites pas votre propre bootstrap ! 
#hooks
Bootstraps
Comment 
bootstrapper ?
Comment bootstrapper ? 
Pour créer une application ou utiliser 
WordPress en tant que framework seul : 
Dans un fichier à la racine de l'installation.
Comment bootstrapper ? 
Besoin du core depuis un thème ou un 
plugin perso : 
>_<' Attention aux chemins modifiés via 
la constante "WP_PLUGIN_DIR" !
Comment bootstrapper ? 
Besoin du core depuis un thème ou un 
plugin perso :
Le chargement
Le chargement 
Qu'est-ce qui est chargé ? 
Des fichiers 
Des hooks
Le chargement 
http://www.rarst.net/images/wordpress_core_load.png
http://www.rarst.net/images/wordpress_core_load.png
Le chargement 
wp-load.php 
Se charge d'inclure wp-config.php 
et wp-includes/load.php 
qui lui-même s'occupe de charger 
les options de votre site.
Le chargement 
muplugins 
/wp-content/mu-plugins/ 
Toujours chargés dans l'ordre alphabétique !
Le chargement 
pluggable.php 
Possibilité de créer conditionnellement 
certaines fonctions avant que le core de 
WordPress ne s'en occupe.
Le chargement 
functions.php 
Thème enfant 
Thème parent 
Attention aux fonctions déjà déclarées !
Le chargement 
$current_user
Le chargement 
template_redirect
Le chargement 
admin-ajax.php
Le chargement 
admin-post.php
Le chargement 
Des hooks 
● muplugins_loaded : 1er hook possible. 
● { vos plugins } : Ceux de leur auteur. 
● plugins_loaded : Vos plugins sont chargés. 
● after_setup_theme : Votre thème l'est aussi. 
● init : WordPress est initialisé. 
● admin_init : Le back-end l'est. 
● pre_get_posts : Possibilité de hacker les requêtes. 
● template_redirect : Dernier hook pour rediriger. 
● { votre thème } : Certains hooks restent obligatoires. 
● shutdown : Dernier hook, géré via PHP.
Démos
Démos
Démos 
Ce code est impossible ! 
Attention à l'ordre de déclenchement des 
hooks, actions ou filtres !
http://www.rarst.net/images/wordpress_core_load.png 
2 
1
Démos 
Ce code est impossible ! 
Tout doit être hooké ! 
Exception pour les defines et globales.
Où trouver ?
Où trouver ? 
Dans le core ! Encore et encore ! 
... et un peu le codex aussi ... 
http://codex.wordpress.org/Plugin_API/Action_Reference 
http://codex.wordpress.org/Plugin_API/Filter_Reference 
http://www.rarst.net/images/wordpress_core_load.png
Merci ! 
Julio Potier 
wp-rocket.me 
@wp_rocket 
WPTech Nantes 2014

Comment se charge WordPress ? Le loading du core.