![Page 1: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/1.jpg)
Comment se charge WordPress ?
Le loading du core
Julio Potierboiteaweb.fr@boiteaweb
WPTech Nantes 2014
![Page 2: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/2.jpg)
Bootstraps
![Page 3: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/3.jpg)
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
![Page 4: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/4.jpg)
Bootstraps
wp-config.php
● Déprécié, ne le faites plus.
![Page 5: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/5.jpg)
Bootstraps
index.php
● Pour le front-end.
● Le plus utilisé.
● Rien à faire niveau code.
● Destiné à ceux qui ont besoin d’un
WordPress complet.
![Page 6: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/6.jpg)
Bootstraps
xmlrpc.php
● Protocole XML-RPC
● Permet de contrôler WP.
● Utilisé par exemple pour les pings.
● Sera remplacé par JSON REST API.
![Page 7: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/7.jpg)
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.
![Page 8: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/8.jpg)
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
![Page 9: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/9.jpg)
Bootstraps
wp-admin/index.php
● Pour le back-end.
● Utilisé par WordPress.
● Rien à faire niveau code.
![Page 10: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/10.jpg)
Bootstraps
admin-post.php
● Utilisé par WordPress.
● À utiliser pour lancer des requêtes non
AJAX.
● Ne faites pas votre propre bootstrap !
#hooks
![Page 11: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/11.jpg)
Bootstraps
admin-ajax.php
● Utilisé par WordPress.
● À utiliser pour lancer des requêtes
AJAX.
● Ne faites pas votre propre bootstrap !
#hooks
![Page 12: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/12.jpg)
Bootstraps
![Page 13: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/13.jpg)
Comment bootstrapper ?
![Page 14: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/14.jpg)
Comment bootstrapper ?
Pour créer une application ou utiliser
WordPress en tant que framework seul :
Dans un fichier à la racine de l'installation.
![Page 15: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/15.jpg)
Comment bootstrapper ?
Besoin du core depuis un thème ou un
plugin perso :
>_<' Attention aux chemins modifiés via
la constante "WP_PLUGIN_DIR" !
![Page 16: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/16.jpg)
Comment bootstrapper ?
Besoin du core depuis un thème ou un
plugin perso :
![Page 17: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/17.jpg)
Le chargement
![Page 18: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/18.jpg)
Le chargement
Qu'est-ce qui est chargé ?
Des fichiers
Des hooks
![Page 19: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/19.jpg)
Le chargement
http://www.rarst.net/images/wordpress_core_load.png
![Page 20: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/20.jpg)
http://www.rarst.net/images/wordpress_core_load.png
![Page 21: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/21.jpg)
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.
![Page 22: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/22.jpg)
Le chargement
muplugins
/wp-content/mu-plugins/
Toujours chargés dans l'ordre alphabétique !
![Page 23: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/23.jpg)
Le chargement
pluggable.php
Possibilité de créer conditionnellement
certaines fonctions avant que le core de
WordPress ne s'en occupe.
![Page 24: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/24.jpg)
Le chargement
functions.php
Thème enfant
Thème parent
Attention aux fonctions déjà déclarées !
![Page 25: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/25.jpg)
Le chargement
$current_user
![Page 26: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/26.jpg)
Le chargement
template_redirect
![Page 27: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/27.jpg)
Le chargement admin-ajax.php
![Page 28: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/28.jpg)
Le chargement admin-post.php
![Page 29: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/29.jpg)
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.
![Page 30: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/30.jpg)
Démos
![Page 31: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/31.jpg)
Démos
![Page 32: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/32.jpg)
Démos
Ce code est impossible !
Attention à l'ordre de déclenchement des
hooks, actions ou filtres !
![Page 33: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/33.jpg)
http://www.rarst.net/images/wordpress_core_load.png
1
2
![Page 34: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/34.jpg)
Démos
Ce code est impossible !Tout doit être hooké !
Exception pour les defines et globales.
![Page 35: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/35.jpg)
Où trouver ?
![Page 36: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/36.jpg)
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
![Page 37: Comment se charge WordPress ? Le loading du core](https://reader035.vdocuments.us/reader035/viewer/2022081404/559afcf71a28ab821a8b4672/html5/thumbnails/37.jpg)
Merci !Julio Potier
wp-rocket.me@wp_rocket
WPTech Nantes 2014