Comment se charge WordPress ? Le loading du core.

5,409 views

Published on

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.

Published in: Internet
  • Be the first to comment

Comment se charge WordPress ? Le loading du core.

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

×