comment se charge wordpress ? le loading du core
DESCRIPTION
Présentation WordPress donnée au WPTech 2014. Le chargement de WordPress reste un mystère pour beaucoup d’entre nous. Entrons dans les entrailles du démarrage de WordPress, trouvons ce qui se passe, quels hooks sont lancés et comprenez alors pourquoi certaines actions nécessites d’être hookées, comprenez l’intérêt des priorités, comprenez pourquoi nous lançons certaines actions trop tard.TRANSCRIPT
Comment se charge WordPress ?
Le loading du core
Julio Potierboiteaweb.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
1
2
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