Meines Wissens nach site_url()
gibt dies den Speicherort zurück, an dem sich die WordPress-Kerndateien befinden.
Wenn also mein Blog bei gehostet http://example.com/blog
wird, site_url()
kehrt das zurückhttp://example.com/blog
Aber wie unterscheidet home_url()
sich das? Für mich home_url()
ergibt sich das Gleiche:http://example.com/blog
Wenn das richtig ist, kann ich WordPress dann zurückgeben http://example.com/
?
Antworten:
Sie stellen gleichzeitig zwei Fragen:
home_url()
undsite_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.
Frage 1
home_url()
Verweisen Sie unter Allgemein> Einstellungen von wp-admin auf das Feld "Site-Adresse (URL)". Verwirrend, nicht wahr? Ja, es steht "Site Address", also könnten Sie annehmensite_url()
, aber Sie würden sich irren . Führen Sie Ihren eigenen Test durch und Sie werden sehen. (Sie können einecho H1
Feld mitsite_url()
undhome_url()
Werten vorübergehend oben in der Datei functions.php Ihres Themas ablegen.)In der Zwischenzeit wird
site_url()
auf das Feld "WordPress-Adresse (URL)" unter "Allgemein"> "Einstellungen" verwiesen.Wenn Sie also darauf verweisen möchten, wo ein physischer Pfad liegt, z. B. den Ordnerpfad eines Plugins auf der URL zum Laden eines Bildes oder den Ordnerpfad eines Themas zum Laden eines Bildes, sollten Sie für diese Funktionen andere Funktionen verwenden - schau dir
plugins_url()
und anget_template_directory_uri()
.Das
site_url()
wird immer der Ort, an dem Sie die Website von Anheften auf erreichen/wp-admin
am Ende, währendhome_url()
würde sicher nicht dieser Ort sein.Das
home_url()
wäre, wenn Sie Ihre Homepage , indem Sie Allgemein> Einstellungen „Site - Adresse (URL)“ Feld gesetzt haben.Frage 2
Also, wenn ich mein Blog in platziert haben
http://example.com/blog
, undexample.com
ist nur ein paar statische Seite , wo ich wie ein Portfolio - Thema haben, dann wäre dies ein Szenario, dass Linien mit Ihrer Frage. In einem solchen Fall würde ich diesen Codeausschnitt verwenden:quelle
Wenn Sie möchten, dass WP in einem Verzeichnis installiert wird, die Site sich jedoch im Stammverzeichnis Ihrer Domain befindet, müssen Sie die Hauptdatei index.php in das Stammverzeichnis Ihrer Domain verschieben und die require-Anweisung so bearbeiten, dass sie auf Ihr Verzeichnis verweist.
Dieser Prozess wird hier beschrieben: WordPress ein eigenes Verzeichnis geben .
quelle
home_url()
da ich im wp-Netzwerkmodus bin. Ich habe WordPress nur einmal ein eigenes Verzeichnis gegeben und es hat mir einfach nicht gefallen. Aber ich benutze daswp_content_dir
auf einigen Seiten.home/usr/public_html/site1
home/usr/public_html/site2
und so weiter und dannwp_content_dir
ist das normalerweise auf einerTLDR:
Bei einer nicht standardmäßigen Installation können Sie Ihre WordPress-Dateien in einem Unterverzeichnis Ihres Website-Stammverzeichnisses ablegen.
... und Ihren Besuchern weiterhin den Zugriff auf Ihre WordPress "Website" über die Domain (Root) URL Ihrer Site ermöglichen, ohne den Namen des Unterverzeichnisses anzufügen:
(dh:
www.example.com
vswww.example.com/wordpress
):Dabei hat der Wert für eine WP-Konstante Vorrang vor einem Wert für wp_options / WP Settings.
Unterschiedliche Konfigurationen für WordPress
In den meisten Standard- WordPress-Installationen
home_url
undsite_url
wird den gleichen Wert haben.Unabhängig davon stehen sie für zwei verschiedene Dinge.
In einer nicht standardmäßigen Installation können sie unterschiedliche Werte haben.
(
//
ist dasrelative
Protokoll und funktioniert für eines / beidehttp://
oderhttps://
)Standardinstallationen (einschließlich "One-Click" -Installationen)
home_url
: ist die Homepage Ihrer (WordPress-) Website, wie in der Adressleiste des Benutzers angegeben.site_url
: ist das Verzeichnis, in dem sich Ihre WordPress-Dateien befinden.Bei der 5-minütigen Installation von WordPress werden WordPress-Dateien installiert. Diese beiden Werte sind identisch. WordPress-Dateien werden in demselben Ordner installiert, in dem die Benutzer Ihre Website oder den WordPress- (Blog-) Teil Ihrer Server-Website ansprechen sollen.
Beispiel 1: Der
Benutzer greift auf Ihr Blog zu unter :
www.example.com
, aufWordPress-Dateien, die unter: installiert sind
www.example.com
, oder auf den Stammordner der Website Ihres Servers.home_url
===site_url
==="www.example.com"
Beispiel 2:
Benutzer greift auf Ihr Blog zu unter :
www.example.com/blog
,WordPress-Dateien installiert unter:
www.example.com/blog
oder imblog
Ordner im Stammverzeichnis Ihrer Website.home_url
===site_url
==="www.example.com/blog"
In diesem Fall
www.example.com
handelt es sich um die Hauptwebsite undwww.example.com/blog
das Stammverzeichnis Ihres Blogs.Hier ist Ihr Blog von Ihrer Hauptwebsite getrennt und fungiert als Teilmenge dieser.
In diesem Fall wird Ihre Hauptwebsite nicht von WordPress gesteuert, definiert oder gestaltet.
Nur dein Blog ist. Alle URLs in Ihrem Blog werden von bearbeitet
www.example.com/blog
Hinweis: In der Dokumentation bezieht sich "Wordpress-Site / Website" (im Gegensatz zu "Site / Website") auf das Verzeichnis, in dem Ihre WordPress-Dateien installiert sind. In diesem Fall ist es
www.example.com/blog
- alles imblog
Ordner. Die "WordPress-Website" ist in diesem Szenario nicht mit Ihrer Domain, Ihrem Root oder Ihrer Hauptwebsite identisch. Es ist eine Teilmenge Ihrer gesamten Website. Ein bisschen wie eine Website innerhalb einer Website. Ich erwähne dies, da die Terminologie angesichts dieses speziellen Aufbaus unklar oder verwirrend erscheinen kann.Alternative WordPress-Installationskonfiguration
Geben Sie WordPress ein eigenes Verzeichnis , den Abschnitt
Method II (With URL change)
.Beispielsweise möchten viele Benutzer den Stammordner ihrer Website nicht mit allen WordPress-Dateien verstopfen.
Sie möchten WordPress in einem Unterverzeichnis * installieren, haben aber Zugriff auf das "Blog" oder die "WordPress-Website", als ob die Dateien im Stammverzeichnis des Servers für die Website installiert wären .
Dies gilt insbesondere dann, wenn WordPress zum Erstellen und Betreiben einer gesamten Website verwendet wird, die nicht einmal über ein "Blog" verfügt.
Beispiel 3:
Benutzer greift auf Ihre „Blog“ auf:
www.example.com
,Wordpress Dateien installiert:
www.example.com/wordpress
oder den Stammordner Ihres Servers Webseite.home_url
==="www.example.com"
site_url
==="www.example.com/wordpress"
(Hinweis: Diese Konfiguration „out of the box“ nicht funktionieren wird nur durch die Werte dieser Variablen zu ändern Es erfordert zusätzliche Konfigurationsänderungen ordnungsgemäß funktioniert.)
Siehe Geben Wordpress ein eigenes Verzeichnis , den Abschnitt
Method II (With URL change)
, wie dies zu tun.In diesem Fall
home_url
undsite_url
sollten unterschiedliche Werte halten.In diesem Setup mögen Sie Ihre Website funktionieren genau wie bei Wordpress - Dateien in dem Stammverzeichnis des Servers für Ihre Website installiert wurden ...
aber für organisatorische Zwecke auf dem Server,
Sie tatsächlich haben Ihre Wordpress - Dateien in einem Ordner mit dem Namen
wordpress
im Server Stammverzeichnis für Ihre Website.Der Benutzer wird also
www.example.com
eingeben, um Ihre WordPress-Homepage zu erhalten, anstattwww.example.com/wordpress
WordPress-Funktion <-> Datenbankvariable <-> WordPress-Konstante
(Die anderen Fälle sind trivial: Alle Variablen / Funktionen halten / geben den gleichen Wert zurück.)
So stellen Sie die Werte fürsite_url
und einhome_url
Lassen Sie mich zunächst das notieren
siteurl
undhome
die von den obigen Funktionen zurückgegebenen Werte speichern1) Normalerweise stellen Sie diese Werte im WordPress-Backend / Dashboard / Admin-Bereich ein:
Settings -> General ->
siteurl
WordPress-Adresse:https://www.example.com/wordpress
home
Site-Adresse:https://www.example.com
(hier keine abschließenden Schrägstriche einfügen - das wäre anderswo konfiguriert)
2) Alternativ setzen Sie diese Werte in Ihrer WordPress-Datenbank:
wp_options
Tabelle ->(hier keine abschließenden Schrägstriche einfügen - das wäre anderswo konfiguriert)
3) Bearbeiten Sie Ihre
wp-config.php
Definieren Sie diese spezifischen Konstanten , um Ihre Werte zu speichern.
Definieren Sie
WP_HOME
undWP_SITEURL
Einstellungen, indem Sie diese Zeilen am Anfang Ihrerwp-config.php
Datei einfügen :(hier keine abschließenden Schrägstriche einfügen - das wäre anderswo konfiguriert)
Referenz: WP_SITEURL und WP_HOME
HINWEIS: Dies ist verwirrend
(Ich wünschte wirklich, WordPress hätte die Einstellungen mit ähnlichen PHP-Namen
wie
Wordpress Site Address
undHome Page Address
oder etwas expliziteren wielocation of WordPress Site core files
und gekennzeichnetbrowser url to access WordPress home page
)Hier wird es schwierig!
WENN Sie diese Konstanten in Ihrer
wp-config.php
Datei definiert haben, spielt es keine Rolle, welche Werte Sie auf Ihrer Datenbank- / Einstellungsseite haben.Tatsächlich können Sie diesen Wert nicht über das Back-End ändern (er wird ausgegraut). Sie können weiterhin Änderungen vornehmen, indem Sie Ihre Datenbank bearbeiten. Dies hat jedoch keine Auswirkungen auf Ihre Site, während die Konstanten in Ihrer WP-Konfigurationsdatei vorhanden sind.
Ihre Konfigurationsdatei ändert nicht die Werte in Ihrer Datenbank (oder folglich auf Ihrer Einstellungsseite). Stattdessen werden Ihre Datenbank- / Einstellungsseitenwerte ignoriert . Die Werte in wp-config überschreiben oder haben Vorrang vor Ihrer Datenbankeinstellung.
Also ... zum Abschluss (TLDR):
Dabei hat der Wert für eine WP-Konstante Vorrang vor einem Wert für wp_options / WP Settings.
Der wp_options-Datensatzwert und der WP-Einstellungswert sind identisch.
Wenn Sie eines bearbeiten, wird per Definition das andere bearbeitet.
Es gibt nur zwei Möglichkeiten, auf dieselbe Variable zuzugreifen.
Andererseits sind die WordPress-Konstanten einzigartig und unabhängig.
Intern überschreiben WordPress (PHP) -Konstanten ihre DB-Gegenstücke.
Wenn in wp-config eine Konstante definiert ist, wird die Datenbank nicht geändert.
Intern bevorzugt / verwendet WordPress jedoch immer den Wert anstelle des Werts db.
quelle
Die Funktionen
site_url()
undhome_url()
sind ähnlich und können zu Unklarheiten in der Funktionsweise führen.Die
site_url()
Funktion ruft den Wert fürsiteurl
in derwp_options
Tabelle in Ihrer Datenbank ab.Dies ist die URL zu den WordPress-Kerndateien.
Wenn Ihre Kerndateien in einem Unterverzeichnis
/wordpress
auf Ihrem Webserver vorhanden sind, lautet der Werthttp://example.com/wordpress
.Die
home_url()
Funktion ruft den Wert fürhome
in derwp_options
Tabelle in Ihrer Datenbank ab.Dies ist die Adresse, die Benutzer zum Anzeigen Ihrer WordPress-Website besuchen sollen.
Wenn Ihre WordPress-Kerndateien in vorhanden sind
/wordpress
, aber Sie möchten, dass Ihre Website-URLhttp://example.com
der Ausgangswert isthttp://example.com
.quelle
So beantworten Sie Ihre zweite Frage:
Dies ist nicht möglich, es sei denn, Sie führen für Giving WordPress eigene Verzeichnisschritte aus . Wenn Sie dies verwenden, legen Sie die WordPress-Kerndateien in
/blog
oder/WordPress
und dannindex.php
in Ihrem Stammverzeichnis ab.Wenn Sie Wordpress entscheiden innerhalb eines eigenen Verzeichnisses zu setzen , dann würden Sie
home_url()
für den Gang zumindex.php
undsite_url()
für immer Core - Dateien und so weiter .Verweise:
Codex für
site_url
Codex für
home_url
Codex für Wordpress Own Directory
quelle
Verwenden Sie einfach den Backslash / , um die URL der Website ohne Unterverzeichnisse ( http://example.com/ anstelle von http://example.com/blog ) abzurufen .
Wenn Sie beispielsweise Folgendes eingeben:
Es wird ein Link erstellt, der zu Ihrer Domain führt
quelle
/