wake-up-neo.com

Was ist der richtige Weg, um WordPress-Funktionen außerhalb von WordPress-Dateien zu verwenden?

Ich habe 2 Methoden zum Initialisieren der WordPress-Funktion außerhalb von WordPress-Dateien gelesen, damit wir diese Funktionen auf jeder Seite oder Website außerhalb des WordPress-Blogs verwenden können.

Welche dieser beiden Methoden ist die richtige? Was sind die Anwendungsfälle für jede Methode, wenn beide korrekt sind? Was ist der Unterschied zwischen der einen oder der anderen Methode?

Methode 1:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-blog-header.php');
?>

Methode 2:

<?php 
    define('WP_USE_THEMES', false);
    require('./wp-load.php');
?>
58
alhoseany

Es gibt kaum einen Unterschied zwischen den Dateien. Wenn Sie eine WordPress-Seite anzeigen, heißt die erste aufgerufene Datei index.php. Und es ist im Wesentlichen Ihre "Methode 1:"

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require ('./wp-blog-header.php');

Die Blog-Header-Datei (die den Rest von WordPress in die Warteschlange stellt) lädt wp-load.php direkt und startet WordPress selbst. Hier ist das meiste von 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' );

}

Der Unterschied zwischen Ihren beiden Methoden ist also ... was geladen ist.

Methode 1 ist genau das, was WordPress tut, um sich selbst zu laden (mit Ausnahme des Deaktivierens von Themen). Wenn Sie also all von WordPress benötigen und alle Standard-Hooks/-Aktionen auslösen möchten, gehen Sie auf diese Weise vor.

Methode 2 ist nur ein weiterer Schritt auf der ganzen Linie. Es lädt alles von WordPress, ruft aber nicht wp() auf oder ruft den Template Loader (der von Themes verwendet wird) auf. Methode 2 ist etwas leichter, sollte aber die gleiche Funktionalität bieten.

56
EAMann

Methode 2 aus Ihrer Frage:

<?php 
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
require( './wp-load.php' );

wp-load.php ist der Zugriff auf alle Funktionen von WordPress, das ist alles. In der ersten Zeile wird WordPress angewiesen, die Themendateien nicht zu laden. Möglicherweise sind die Dateien für Ihre Anforderungen erforderlich. Entfernen Sie dann die Zeile.

15
bueltge

wp-blog-header.php fügt einen Header-Status hinzu und gibt den http-Statuscode 404 zurück

wp-load.php geht nicht

Nützlich, wenn Sie Ajax verwenden, um den http-Statuscode zu überprüfen

3
RayLau135

Manchmal kann das Laden der functions.php des Themes zu Problemen führen. Es hat den HTML-Code meiner anderen Seite verletzt. So habe ich es gemacht und mein Problem gelöst:

define('STYLESHEETPATH', '');
define('TEMPLATEPATH', '');
require_once(RAIZ_WORDPRESS."/wp-load.php");
2

@ ninja08

Wir können die xDebug-PHP-Erweiterung verwenden, um ein Skript zu analysieren.

aktivieren Sie einfach ;xdebug.profiler_enable = 1 in Ihrer php.ini -Datei, indem Sie ; aus der ersten Zeile entfernen und anschließend den Apache-Server neu starten und Ihre WordPress-Site ausführen. Nun wird eine Datei im tmp-Verzeichnis Ihres xampp-Servers erstellt. Öffnen Sie diese Datei mit WincachGrind Anwendung.

jetzt können Sie eine Karte Ihres Skripts sehen

 WincacheGrind Simple Wordpress Analyze 

0
Mostafa