web-dev-qa-db-fra.com

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

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');
?>
58
alhoseany

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é.

56
EAMann

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.

15
bueltge

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

3
RayLau135

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");
2
Wellington Lorindo

@ 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

WincacheGrind Simple Wordpress Analyze

0
Mostafa