Wie kann ich WordPress-Funktionen in eine benutzerdefinierte .php-Datei aufnehmen?
Im Detail: Ich habe ein Verzeichnis unter meinem Thema (Konstruktor) mit dem Namen Berichte. Diese enthalten .php-Dateien, die Berichte aus Daten von der Site mit DOMPDF zum Herunterladen generieren. Für diese möchte ich beispielsweise Funktionen verwenden, die die WordPress-Engine bietet get_the_author_meta( 'user_firstname', $user_id )
. Wenn ich diese benutze, bekomme ich (natürlich) folgenden Fehler:
Schwerwiegender Fehler: Aufruf der undefinierten Funktion get_the_author_meta () in ROOT / public_html / wp-content / themes / constructor / reports / testreport.php in Zeile 15
Ich wurde zu der Überzeugung gebracht, dass ich wp-blog-header.php einschließen muss. Ich benutze require_once("../../../../wp-blog-header.php");
. Damit erhalte ich folgenden 404 Fehler:
Für die Webadresse wurde keine Webseite gefunden: ROOT / wp-content / themes / constructor / reports / testreport.php
(Die Anforderung zeigt auf den richtigen Pfad. Wenn ich damit herumfummle, erhalte ich die Warnung: require_once (../../../ wp-blog-header.php): Der Stream konnte nicht geöffnet werden ... Der Pfad muss also richtig sein.)
Gibt es etwas, das ich übersehen habe? Warum kann ich diese WP-Datei nicht einschließen? Was ist die richtige Methode, um die wp-Funktionen einzuschließen?
Danke für die Hilfe, Sziro
Antworten:
Du bist auf dem richtigen Weg. Versuchen Sie stattdessen Folgendes:
require_once("../../../../wp-load.php");
quelle
require_once(rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/wp-load.php');
$_SERVER
kann nicht über cli definiert werden, benutze__DIR__ . '/path/to/wp-load,php';
Um wp-Funktionen in benutzerdefinierten .php-Dateien zu verwenden, müssen Sie diese
wp-load.php
in Ihre Datei aufnehmen. Sie können dies tun, indem Sie die folgende Zeile hinzufügen:require_once(PATH_TO.'/wp-load.php');
Wenn sich WordPress im Dokumentenstamm befindet, fügen Sie stattdessen Folgendes hinzu:
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
quelle
Wenn jemand neuere PHP-Versionen installiert hat (ver> = 5.5.x), kann er auch den folgenden Code im Root-Skript im WordPress-Website-Verzeichnis selbst ausprobieren:
<?php define("WP_ROOT", __DIR__); define("DS", DIRECTORY_SEPARATOR); require_once WP_ROOT . DS . "wp-load.php";
Oder
<?php define("WP_ROOT", __DIR__); define("DS", DIRECTORY_SEPARATOR); require_once WP_ROOT . DS . "wp-blog-header.php";
Ich denke, dies ist ein direkterer und saubererer Ansatz und beinhaltet nicht das manuelle Hinzufügen von Schrägstrichen und das Ändern von Verzeichnissen durch
..
.Hoffe das hilft jemandem.
quelle
require_once(dirname(__FILE__) . '/options.php');
Dies ist eine bessere Möglichkeit, eine Datei in WordPress aufzunehmen.
quelle
Externe Dateien können problemlos auf die WordPress-Funktionen zugreifen. Sie müssen nur die Datei
wp-load.php
in Ihre externe Datei aufnehmen. Diewp-load.php
Datei befindet sich im Stammverzeichnis Ihrer WordPress-Installation. Beispiel: Angenommen, Ihre Datei befindettest.php
sich im Stammverzeichnis der WordPress-Installation.<?php require_once('wp-load.php'); // Your custom code ?>
Quelle: Zugriff auf WordPress-Funktionen in einer externen Datei
quelle
Ich benutze diese Methode, um eine WordPress-Umgebung außerhalb von WordPress zu laden.
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php')) { /** Loads the WordPress Environment and Template */ require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); }
quelle