J'ai lu environ 2 méthodes d'initialisation de la fonction WordPress en dehors des fichiers WordPress afin que nous puissions utiliser ces fonctions sur n'importe quelle page ou site web en dehors du blog WordPress.
Laquelle de ces 2 méthodes est la bonne? Quels sont les cas d'utilisation de chaque méthode si les deux sont correctes? Quelle est la déférence entre l'utilisation de l'une ou l'autre méthode?
Méthode 1:
<?php
define('WP_USE_THEMES', false);
require('./wp-blog-header.php');
?>
Méthode 2:
<?php
define('WP_USE_THEMES', false);
require('./wp-load.php');
?>
Il y a peu de différence entre les fichiers. Lorsque vous affichez une page WordPress, le premier fichier appelé est index.php
. Et c’est essentiellement votre "Méthode 1:"
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');
Le fichier d'en-tête du blog (qui met en file d'attente le reste de WordPress) charge directement wp-load.php
et lance WordPress lui-même. Voici l'essentiel de wp-blog-header.php
:
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
wp();
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
La différence entre vos deux méthodes est donc… ce qui est chargé.
La méthode 1 correspond exactement à ce que WordPress fait pour se charger (à l’exception de la désactivation des thèmes). Donc, si vous avez besoin de all de WordPress et souhaitez déclencher tous les points d'ancrage/actions par défaut, choisissez cette route.
La méthode 2 n’est qu’un pas en avant. Il charge tout WordPress, mais n'appelle pas wp()
et n'invoque pas le chargeur de modèles (utilisé par les thèmes). La méthode 2 sera un peu plus légère, mais devrait vous donner la même fonctionnalité.
Méthode 2 de votre question:
<?php
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );
wp-load.php
est l'accès à toutes les fonctions de WordPress, c'est tout. La première ligne indique à WordPress de ne pas charger les fichiers de thème; peut-être que les fichiers sont nécessaires pour vos besoins, puis supprimez la ligne.
wp-blog-header.php va attacher un statut d'en-tête, il retournera un code de statut http de 404
wp-load.php ne sera pas
Utile à noter lors de l'utilisation d'ajax car il vérifie le code de statut http
Parfois, le chargement du fichier functions.php du thème peut vous causer des problèmes. Il cassait le HTML de mon autre page. Voilà donc ce que j'ai fait et résolu mon problème:
define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
@ ninja08
Nous pouvons utiliser l'extension php xDebug pour analyser un script.
activez simplement ;xdebug.profiler_enable = 1
dans votre fichier php.ini
en supprimant ;
de la première ligne, puis redémarrez le serveur Apache et exécutez votre site wordpress ... maintenant un fichier créé dans le répertoire tmp de votre serveur xampp ... ouvrez ce fichier avec WincachGrind application.
maintenant vous pouvez voir une carte de votre script