it-swarm.com.de

Wie füge ich Wordpress-Funktionen in benutzerdefinierte .php-Dateien ein?

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

43
Sziro

Du bist auf dem richtigen Weg. Versuchen Sie es stattdessen:

require_once("../../../../wp-load.php");
86
seanbreeden

Der professionellere Weg ohne die Punkte-Sache, wenn WordPress die Wurzel des Dokuments war:

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
13
Salam El-Banna
require_once(dirname(__FILE__) . '/options.php');

Dies ist eine bessere Methode, um eine Datei in WordPress einzubinden

2

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.

2
VST

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

0
Aman Dhanda