comment se charge wordpress ? le loading du core

Post on 07-Jul-2015

3.442 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

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

top related