it-swarm.com.de

Was ist der Unterschied zwischen home_url () und site_url ()

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?

59
Praveen

Sie stellen gleichzeitig zwei Fragen:

  1. Was ist der Unterschied zwischen home_url() und site_url()?
  2. Wie bringe ich WordPress dazu, das URL-Stammverzeichnis ohne das Unterverzeichnis zurückzugeben, in dem es installiert ist?

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.

Frage 1

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.

Frage 2

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;
}
48
Volomike

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 .

7
Milo

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

2
xLRDxREVENGEx

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.

2
Nanhe Kumar