WordPress Bootstraps ou Comment bien charger WordPress

WordPress Bootstraps ou Comment bien charger WordPress

Nous allons ici parler des bootstraps, ces petits scripts ou programmes d’amorçage qui permettent d’en lancer un plus gros, ici WordPress.

Pourquoi faire ?

Je m’adresse aux développeurs de plugins & astuces voire de thèmes (désolé Mme Michu). WordPress contient de nombreuses APIs comme son API HTTP une merveille de simplicité, API d’upload en 1 fonction, API de base de données, API sécurité et j’en passe.

Saviez-vous que vous pouviez charger WordPress sans l’interface, sans le front-end, juste pour utiliser ses APIs ? Vous pouvez même bà¢tir un mini site web WordPress mais sans les thèmes, vous pouvez créer un accès membre, sans back-end etc. C’est ça aussi la puissance de WordPress.

Comment bien charger WordPress

Mais vous allez me dire « WordPress se charge tout seul, il est grand ! » Oui, pour index.php … Saviez-vous que WordPress intègre 4 bootstraps en front-end ? Ha, ça vous en bouche un coin 😉

Les voici :

  1. index.php
  2. wp-blog-header.php
  3. wp-config.php (déprécié)
  4. wp-load.php

index.php

Ce bootstrap est celui le plus utilisé, évidemment, de plus, vous n’avez rien à faire niveau code, un simple appel HTTP sur cette page et hop, l’index s’occupe de tout. Ce bootstrap est destiné à ceux qui ont besoin d’un WordPress complet, c’est à dire les thèmes, les plugins, la main query, toutes les APIs.

wp-blog-header.php

En utilisant ce bootstrap, vous ne chargerez pas de template de votre thème ni ne ferez le hook action « template_redirect ». La différence avec index.php est que la constante « WP_USE_THEMES » n’est pas définie, le comportement est donc déjà changé. Par contre, vous chargez tout de même les plugins, la main query et toutes les APIs.

wp-config.php

Lancer WordPress en faisant un appel à ce fichier est déprécié, ne le faites plus. Le soucis vient du fait que cet appel ne prends pas en compte la possibilité que le fichier wp-config.php soit un rang au dessus de l’installation, sans être pour autant le wp-config.php d’une autre installation. Oui, évitez quoi …

wp-load.php

Le meilleur bootstrap selon moi, le bootstrap avec lequel vous chargerez toutes les API de WordPress et les plugins, point. Pas besoin des thèmes, pas besoin de la main query, juste la puissance de WordPress ici.

Il existe même une astuce qui permet de réduire le temps de chargement et la mémoire en évitant de charger les plugins (et mu-plugins) et pleins d’autres APIs, juste pour avoir un WP utilisable rapidement, la constante « SHORTINIT » (ça vous en rebouche encore un coin hein ?).

J’utilise ce bootstrap dans mes scripts WordPress Backdoor User, WordPress Easy Backup et WordPress No Plugins. Et même WordPress lui même utilise ce bootstrap DANS WordPress, mais oui ! Lorsqu’une requête AJAX est faite, WordPress n’a pas besoin de tout charger, donc il fait appel à ce bootstrap, c’est bien la preuve que c’est top ;D Je vous conseille aussi de l’utiliser pour vos appels AJAX maison.

Le core de WordPress, wp-admin/admin-ajax.php
Le core de WordPress, wp-admin/admin-ajax.php

Comment utiliser un autre bootstrap que index.php

Vous trouverez des tutoriels et des plugins sur le net utilisant un de ces bootstraps mais malheureusement la plupart font n »importe quoi.

Disons que vous ayez besoin de faire appel à un bootstrap depuis la racine du site, une simple ligne suffit :

Mais si vous êtes dans un plugin, voici ce qu’il NE FAUT PAS faire :

include( '../../../wp-load.php' ); // Load WordPress

Pourquoi pas ! Étant dans « /wp-content/plugins/mon-plugin/ » je sais qu’en remontant de 3 rangs je serais à la racine non ? NON car les chemins peuvent être modifiés ! Et si j’ai mis « /wordpress/contenu/plugins/addons/mon-plugin/ » et bien forcément … ça ne marche pas :/

Ho et puis « include » ? « include_once » ? « require » ? « require_once » ? Vous connaissez la différence ?

Allez petit rappel :

  • include() : inclus un fichier, s’il n’est pas trouvé, le script déclenche un Warning et continue.
  • include_once() : inclus un fichier une seule fois, si un second include de ce fichier (chemin inclus) est fait, il ne sera pas de nouveau inclus et encore, s’il n’est pas trouvé, le script déclenche un Warning et continue.
  • require() : inclus un fichier, s’il n’est pas trouvé, le script déclenche une Fatal Error et stoppe tout.
  • require_once() : inclus un fichier une seule fois, si un second require de ce fichier (chemin inclus) est fait, il ne sera pas de nouveau requis et encore, s’il n’est pas trouvé, le script déclenche une Fatal Error et stoppe tout.

La vraie bonne façon de faire appel à un boostrap est la suivante :

// Load WordPress
$bootstrap = 'wp-load.php';
while( !is_file( $bootstrap ) ) {
	if( is_dir( '..' ) ) 
		chdir( '..' );
	else
		die( 'EN: Could not find WordPress! FR : Impossible de trouver WordPress !' );
}
require_once( $bootstrap );

De cette façon, je test si mon bootstrap est dans le même dossier que moi, si « non », je remonte d’un rang et recommence. Le script s’arrête quand le fichier est trouvé ou quand le chdir() ne peut plus remonter plus loin.

Un dessin, un dessin

Bon ok :

Quel bootstrap choisir ? (https://www.circuitlab.com)

Là , vous n’avez plus le droit à l’erreur !

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum