Holen Sie sich den Pfad des WordPress-Installationsordners

Lesezeit: 6 Minuten

Benutzer-Avatar
Benutzer983248

Gibt es eine Möglichkeit, den Pfad zu erhalten, wo WordPress installiert ist?

Ich habe Folgendes verwendet:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);

Es ist in Ordnung für www.example.com -> /usr/local/pem/vhosts/165312/webspace/httpdocs

Für www.example.com/blog ist dies nicht in Ordnung, da ich den Ordnernamen (Blog) fest codieren muss.

Später fand ich einen Weg, indem ich dies verwendete:

$iroot = getcwd();
$folder = explode("https://stackoverflow.com/", $iroot);
$dir = $folder[8]; // I know is 8
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require "$root/$dir/wp-blog-header.php";

Aber es ist immer noch eine Menge komplizierter Dinge. Gibt es eine einfache Möglichkeit, ohne harte Codierung dorthin zu gelangen, wo WordPress installiert ist (der Pfad)?

Anmerkung 1 WordPress-Funktionen funktionieren nicht, da dies irgendwie außerhalb von WordPress liegt. Wie im letzten Beispiel erwähnt, besteht der springende Punkt darin, den WordPress-Installationspfad zu bestimmen require "wp-blog-header.php"; bei mehreren WordPress-Installationen, bei denen jede Installation einen anderen Ordner verwendet (example.com/blog-one und example.com/blog-two), nicht WordPress MU oder Multi Site.

Anmerkung 2 Wenn statt require "$root/$dir/wp-blog-header.php"; ich benutze require "wp-blog-header.php"; Es funktioniert, solange sich die Datei im selben Ordner befindet, aber in meinem Fall befindet sich die Datei manchmal in einem anderen Ordner.

  • Was ist mit der Datenbankabfrage? WordPress speichert diese Variable auch in seiner wp_config?

    – Jure C.

    10. Juni 2012 um 11:41 Uhr

  • @JureC. Werden Sie das als Antwort mit einem Beispiel posten? Es ist eine gute Idee.

    – Benutzer983248

    10. Juni 2012 um 12:06 Uhr

Benutzer-Avatar
Estevão Lucas

Verwenden Sie die ABSPATH-Konstante:

<?php echo ABSPATH ?>

Dies sollte Ihren WordPress-Pfad drucken.

Benutzer-Avatar
akamaozu

Folgendes mache ich:

Konfiguration:

$docRoot = $_SERVER['DOCUMENT_ROOT'];
$scriptName = $_SERVER['SCRIPT_NAME'];
$queryArray = explode("https://stackoverflow.com/", $scriptName);
$queryLength = count($queryArray);

Verwendungszweck:

require_once($docRoot . ($queryLength > 2 ? "https://stackoverflow.com/".$queryArray[$queryLength - 2] : "" ) . '/wp-blog-header.php');

Dies funktioniert im Moment sehr gut für mich, um eine WordPress-Umgebung zu instanziieren, unabhängig davon, wo sich das Skript befindet. Vor der Verwendung unbedingt desinfizieren $_SERVER Variablen (und ich muss dies außerhalb meiner localhost-Umgebung dreifach überprüfen), aber ich glaube nicht, dass es schwerwiegende Änderungen erfordert, um eine praktische universelle Lösung zu sein.

Benutzer-Avatar
William Turell

So geht’s aus WordPress heraus (Das ist nicht das, wonach der Fragesteller gefragt hat, aber ich vermute, wonach viele Leute suchen werden …)

Es gibt eine spezielle Funktion, get_home_path()was Ihnen so etwas gibt wie:

/srv/www/my-site/htdocs/

Weitere Funktionen für Datei- und Inhaltsverzeichnisse (und Webpfade).

Benutzer-Avatar
Benutzer983248

Root-Beispiel:

  • /usr/local/pem/vhosts/165312/webspace/httpdocs/blog-one
  • /usr/local/pem/vhosts/165312/webspace/httpdocs/blog-two
  • /usr/local/pem/vhosts/165312/webspace/httpdocs/some-blog

Das folgende Beispiel funktioniert weiter irgendein der Blogs (“blog-one”, “blog-two” und “some-blog”) und das Skript oder die Datei können installiert werden irgendein Unterordner des Blogs.

$current_path = getcwd(); // Get the current path to where the file is located
$folder = explode("https://stackoverflow.com/", $current_path); // Divide the path in parts (aka folders)
$blog = $folder[8]; // The blog's folder is the number 8 on the path

// $root = path without the blog installation folder.
$root = realpath($_SERVER["DOCUMENT_ROOT"]);

// Now I can require any WordPress file
require "$root/$dir/wp-blog-header.php";

// For the current installation
// For example, wp-blog-header.php to get the blog name or
// wp-config.php to access the database.

Dadurch wird das Skript unabhängig. Das Skript funktioniert mit jedem Ordner in jeder WordPress-Installation, solange der Ordner die Nummer 8 hat. Wenn sich die Installation in einem Unterordner befindet, muss die Nummer 8 erhöht werden. Beachten Sie auch, dass der aktuelle Pfad mehr oder weniger Ordner haben kann, sodass das Skript entsprechend angepasst werden muss.

Notiz: Dies funktioniert durch “hartes Codieren” der Ordnerposition im Pfad, und solange alle Installationen dieselbe Position haben, funktioniert das Skript. Der andere Weg ist Hardcode.

Benutzer-Avatar
Drahkar

Wenn Sie nur das aktuelle Verzeichnis suchen, in dem sich die aufgerufene Datei befindet, würde ich Folgendes verwenden:

realpath(dirname(__FILE__))

Vieles davon hängt davon ab, wo sich die Datei befindet. Wenn es sich im selben Verzeichnis wie die WordPress-Installation befindet, würde es so aussehen:

<?php
    $root = realpath(dirname(__FILE__));
    require "$root/wp-blog-header.php";
?>

  • sorry aber das hat nicht funktioniert. Ich muss ersetzen ‘DATEI‘mit etwas anderem? denn wie Sie in Ihrer Antwort gepostet haben, funktioniert es nicht.

    – Benutzer983248

    10. Juni 2012 um 2:32 Uhr

  • Das tut mir leid. Vergessen, den Verzeichnisnamen hinzuzufügen, um den Dateinamen aus dem Pfad zu entfernen. Habe es gerade aktualisiert. Und Sie sollten es so eingeben, wie es ist.

    – Drahkar

    10. Juni 2012 um 2:34 Uhr

  • Entschuldigung, aber es funktioniert nur, wenn sich das Skript im selben Ordner befindet. Ich suche nach einer etwas flexibleren Lösung, die mit jedem Ordner arbeiten kann, wie in Anmerkung 2 zu der Frage angegeben.

    – Benutzer983248

    10. Juni 2012 um 2:35 Uhr

  • Leider erfordert das, was Sie beschreiben, dass Sie auf irgendeine Weise nachverfolgen, wo sich die Dateien befinden, und auf diese Weise auf den Pfad verweisen. Stattdessen empfehle ich, in jedem der WordPress-Verzeichnisse ein Skript dafür zu haben, das dann den allgemeinen Speicherort für den Rest des Codes aufruft. Im Grunde ein Ladeskript. Alles andere wird schwierig umzusetzen und langfristig mühsam zu bewältigen sein.

    – Drahkar

    18. Juni 2012 um 13:33 Uhr

Benutzer-Avatar
Peter Mortensen

Wenn Sie die Datenbank erreichen können, müssen Sie dies tun

update_option('wp_dir',dirname(__FILE__));

in der Datei wp-blog-header.php.

Verbinden Sie sich dann von einer beliebigen Anwendung aus mit der Datenbank und rufen Sie den Pfad mit der folgenden Abfrage ab:

select option_value from wp_options where option_name="wp_dir";

Natürlich müssten Sie den Datenbanknamen und das WordPress-Tabellenpräfix kennen.

PS: Dies kann Ihre Lösung sein oder auch nicht, aber es ist einer der Wege.

  • sorry aber das hat nicht funktioniert. Ich muss ersetzen ‘DATEI‘mit etwas anderem? denn wie Sie in Ihrer Antwort gepostet haben, funktioniert es nicht.

    – Benutzer983248

    10. Juni 2012 um 2:32 Uhr

  • Das tut mir leid. Vergessen, den Verzeichnisnamen hinzuzufügen, um den Dateinamen aus dem Pfad zu entfernen. Habe es gerade aktualisiert. Und Sie sollten es so eingeben, wie es ist.

    – Drahkar

    10. Juni 2012 um 2:34 Uhr

  • Entschuldigung, aber es funktioniert nur, wenn sich das Skript im selben Ordner befindet. Ich suche nach einer etwas flexibleren Lösung, die mit jedem Ordner arbeiten kann, wie in Anmerkung 2 zu der Frage angegeben.

    – Benutzer983248

    10. Juni 2012 um 2:35 Uhr

  • Leider erfordert das, was Sie beschreiben, dass Sie auf irgendeine Weise nachverfolgen, wo sich die Dateien befinden, und auf diese Weise auf den Pfad verweisen. Stattdessen empfehle ich, in jedem der WordPress-Verzeichnisse ein Skript dafür zu haben, das dann den allgemeinen Speicherort für den Rest des Codes aufruft. Im Grunde ein Ladeskript. Alles andere wird schwierig umzusetzen und langfristig mühsam zu bewältigen sein.

    – Drahkar

    18. Juni 2012 um 13:33 Uhr

Warum nicht einfach in der wp-config.php folgendes machen:

$WP_PATH = implode("https://stackoverflow.com/", (explode("https://stackoverflow.com/", $_SERVER["PHP_SELF"], -1)));

z.B

$WP_PATH = implode("https://stackoverflow.com/", (explode("https://stackoverflow.com/", "/one/two/three/index.php", -1)));

wird “/eins/zwei/drei” zurückgeben und

$WP_PATH = implode("https://stackoverflow.com/", (explode("https://stackoverflow.com/", "/index.php", -1)));

wird zurückkehren “”

1364930cookie-checkHolen Sie sich den Pfad des WordPress-Installationsordners

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy