Wie kann ich Wordpress-Funktionen in eine benutzerdefinierte .php-Datei einfügen?
Im Detail: Ich habe ein Verzeichnis unter meinem Thema (Constructor) namens Reports. Diese enthalten .php-Dateien, die Berichte aus Daten von der Site mit DOMPDF zum Herunterladen erstellen. Für diese möchte ich Funktionen verwenden, die die Wordpress-Engine bietet, zum Beispiel get_the_author_meta( 'user_firstname', $user_id )
. Wenn ich diese benutze, bekomme ich (natürlich) den folgenden Fehler:
Schwerwiegender Fehler: Rufen Sie die undefined-Funktion get_the_author_meta () in ROOT/public_html/wp-content/themes/constructor/reports/testreport.php in Zeile 15 auf
Ich war überzeugt, dass ich wp-blog-header.php einschließen muss. Ich benutze require_once("../../../../wp-blog-header.php");
. Damit erhalte ich den folgenden 404-Fehler:
Es wurde keine Webseite für die Webadresse gefunden: ROOT/wp-content/themes/constructor/reports/testreport.php
(Die Anforderung zeigt auf den korrekten Pfad. Wenn ich damit herumfeile, erhalte ich folgende Warnung: required_once (../../../wp-blog-header.php): Der Stream konnte nicht geöffnet werden ... Also muss der Pfad richtig sein.)
Gibt es etwas, was ich übersehen habe? Warum kann ich diese WP-Datei nicht einschließen? Was ist die richtige Methode, um die WP-Funktionen einzubeziehen?
Danke für die Hilfe, Sziro
Du bist auf dem richtigen Weg. Versuchen Sie es stattdessen:
require_once("../../../../wp-load.php");
Der professionellere Weg ohne die Punkte-Sache, wenn WordPress die Wurzel des Dokuments war:
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
require_once(dirname(__FILE__) . '/options.php');
Dies ist eine bessere Methode, um eine Datei in WordPress einzubinden
Wenn jemand neuere Versionen von PHP installiert hat (ver> = 5.5.x), können Sie 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 direkter und sauberer Ansatz und erfordert nicht das manuelle Hinzufügen von Schrägstrichen und das Ändern der Verzeichnisse durch ..
.
Hoffe das hilft jemandem.
Externe Dateien können problemlos auf die Wordpress-Funktionen zugreifen. Sie müssen lediglich die Datei wp-load.php
in Ihre externe Datei einfügen. Die Datei wp-load.php
befindet sich im Stammverzeichnis Ihrer WordPress-Installation. Beispiel: Angenommen, Ihre Datei befindet sich test.php
im Stammverzeichnis der WordPress-Installation.
<?php
require_once('wp-load.php');
// Your custom code
?>
Quelle: So greifen Sie auf WordPress-Funktionen in einer externen Datei zu