Meines Wissens nach gibt site_url()
den Speicherort zurück, an dem sich die WordPress-Kerndateien befinden.
Wenn mein Blog bei http://example.com/blog
gehostet wird, gibt site_url()
http://example.com/blog
zurück.
Aber wie unterscheidet sich dann home_url()
? Für mich gibt home_url()
dasselbe zurück: http://example.com/blog
Wenn das richtig ist, kann ich WordPress dann dazu bringen, http://example.com/
zurückzugeben?
Sie stellen gleichzeitig zwei Fragen:
home_url()
und site_url()
?Hier sind die Antworten, die ich zusammen mit Andrew Nacin, einem der Hauptentwickler von WordPress, bestätigte und einige Servertests durchführte, um zu bestätigen, was Andrew mir sagte.
Unter Allgemein> Einstellungen von wp-admin verweist home_url()
auf das Feld mit der Bezeichnung "Site Address (URL)". Verwirrend, nicht wahr? Ja, es steht "Site Address", also könnten Sie site_url()
annehmen, aber Sie würden sich irren . Führen Sie Ihren eigenen Test durch und Sie werden sehen. (Sie können ein echo H1
-Feld mit site_url()
- und home_url()
-Werten vorübergehend oben in der functions.php Ihres Themas ablegen.)
In der Zwischenzeit verweist site_url()
auf das Feld "WordPress-Adresse (URL)" unter "Allgemein"> "Einstellungen".
Wenn Sie also darauf verweisen möchten, wo ein physischer Pfad liegt, wie z. B. den Ordnerpfad eines Plugins auf der URL, um ein Bild zu laden, oder den Ordnerpfad eines Themas, um ein Bild zu laden, sollten Sie für diese Funktionen andere Funktionen verwenden - Schauen Sie sich plugins_url()
und get_template_directory_uri()
an.
Die site_url()
ist immer der Ort, an dem Sie die Site erreichen können, indem Sie am Ende den /wp-admin
anheften, während home_url()
nicht zuverlässig dieser Ort ist.
In home_url()
haben Sie Ihre Homepage über das Feld Allgemein> Einstellungen "Site-Adresse (URL)" festgelegt.
Wenn ich mein Blog in http://example.com/blog
platziert habe und example.com
nur eine statische Site ist, auf der ich ein Portfolio-Thema mag, ist dies ein Szenario, das mit Ihrer Frage übereinstimmt. In einem solchen Fall würde ich diesen Codeausschnitt verwenden:
<?php
function getDomain() {
$sURL = site_url(); // WordPress function
$asParts = parse_url( $sURL ); // PHP function
if ( ! $asParts )
wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result
$sScheme = $asParts['scheme'];
$nPort = $asParts['port'];
$sHost = $asParts['Host'];
$nPort = 80 == $nPort ? '' : $nPort;
$nPort = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort;
$sPort = ! empty( $sPort ) ? ":$nPort" : '';
$sReturn = $sScheme . '://' . $sHost . $sPort;
return $sReturn;
}
Wenn WP in einem Verzeichnis installiert werden soll, die Site sich jedoch im Stammverzeichnis Ihrer Domain befindet, müssen Sie die Hauptdatei index.php in das Stammverzeichnis Ihrer Domain verschieben und die Anweisung require so bearbeiten, dass sie auf Ihr Verzeichnis verweist.
Dieser Prozess wird hier beschrieben: WordPress ein eigenes Verzeichnis geben .
So beantworten Sie Ihre zweite Frage:
F: Wenn das richtig ist, kann ich WordPress dann dazu bringen, http://example.com/ zurückzugeben?
Das kannst du nicht, es sei denn du nimmst das Giving WordPress ein eigenes Verzeichnis steps. Auf diese Weise legen Sie WordPress-Kerndateien in /blog
oder /WordPress
und dann den index.php
in Ihrem Stammverzeichnis ab.
Wenn Sie WordPress in einem eigenen Verzeichnis ablegen möchten, verwenden Sie home_url()
zum Aufrufen von index.php
und site_url()
zum Abrufen von Kerndateien und dergleichen.
Referenzen:
Kodex für site_url
Kodex für home_url
Codex um Wordpress ein eigenes Verzeichnis zu geben
Die Funktionen site_url()
und home_url()
sind ähnlich und können zu Unklarheiten in der Funktionsweise führen.
Die Funktion site_url()
ruft den Wert für siteurl
in der Tabelle wp_options
in Ihrer Datenbank ab.
Dies ist die URL zu den WordPress-Kerndateien.
Wenn sich Ihre Kerndateien in einem Unterverzeichnis /wordpress
auf Ihrem Webserver befinden, lautet der Wert http://example.com/wordpress
.
Die Funktion home_url()
ruft den Wert für home
in der Tabelle wp_options
in Ihrer Datenbank ab.
Dies ist die Adresse, die Benutzer zum Anzeigen Ihrer WordPress-Website besuchen sollen.
Wenn Ihre WordPress-Kerndateien in /wordpress
vorhanden sind, Ihre Website-URL jedoch http://example.com
sein soll, sollte der Ausgangswert http://example.com
sein.