Quelle est la bonne façon d'utiliser les fonctions WordPress en dehors des fichiers WordPress?

52

J'ai lu environ 2 méthodes d'initialisation de la fonction WordPress en dehors des fichiers WordPress afin de pouvoir les utiliser sur toute page ou site Web autre que le 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 utiliser 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');
?>
    
posée alhoseany 27.03.2012 - 23:16

5 réponses

52

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 de blog (qui met en file d'attente le reste de WordPress) charge wp-load.php directement 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 tous de WordPress et souhaitez déclencher tous les points d'ancrage / actions par défaut, utilisez 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é.

    
réponse donnée EAMann 28.03.2012 - 00:57
12

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.

    
réponse donnée bueltge 27.03.2012 - 23:32
3

wp-blog-header.php va joindre 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 de ajax lorsqu’il vérifie le code de statut http

    
réponse donnée RayLau135 11.04.2016 - 12:42
2

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");
    
réponse donnée Wellington Lorindo 27.10.2015 - 12:19
0

@ ninja08

Nous pouvons utiliser l'extension xDebug php pour analyser un script.

activez simplement ;xdebug.profiler_enable = 1 dans votre fichier php.ini en supprimant ; du début de la ligne et après ce serveur Apache, redémarrez et lancez votre site wordpress ... maintenant un fichier créé dans le répertoire tmp de votre serveur xampp ... ouvrez ce fichier avec WincachGrind .

vous pouvez maintenant voir une carte de votre script

    
réponse donnée Mostafa 14.12.2015 - 06:08

Lire d'autres questions sur les étiquettes