Rozumiem, że site_url()
zwraca lokalizację, w której znajdują się podstawowe pliki wordpress.
Tak więc, jeśli mój blog jest hostowany w, http://example.com/blog
wtedy site_url()
wracahttp://example.com/blog
Ale czym się home_url()
różni? Dla mnie home_url()
zwraca to samo:http://example.com/blog
Jeśli to prawda, czy mogę poprosić Wordpress o zwrot http://example.com/
?
Odpowiedzi:
Zadajesz jednocześnie dwa pytania:
home_url()
isite_url()
?Oto odpowiedzi, które potwierdziłem wraz z Andrew Nacinem, głównym programistą WordPress, a także przeprowadziłem testy serwera, aby potwierdzić to, co powiedział mi Andrew.
Pytanie 1
W Ogólne> Ustawienia wp-admin,
home_url()
odwołuje się do pola oznaczonego „Adres strony (URL)”. Mylące, co? Tak, jest napisane „Adres strony”, więc możesz założyćsite_url()
, ale pomylisz się . Uruchom własny test, a zobaczysz. (Możesz tymczasowo upuścićecho H1
pole z wartościamisite_url()
ihome_url()
na górze funkcji Twojego motywu. Php.)Tymczasem
site_url()
odwołuje się do pola oznaczonego „Adres WordPress (URL)” w Ogólne> Ustawienia.Jeśli więc chcesz wskazać, gdzie może być ścieżka fizyczna, na przykład wywołanie ścieżki folderu wtyczki na adres URL w celu załadowania obrazu lub wywołanie ścieżki folderu motywu w celu załadowania obrazu, w rzeczywistości powinieneś użyć innych funkcji: spójrz na
plugins_url()
iget_template_directory_uri()
.site_url()
Zawsze będzie miejsce, w którym można dotrzeć do witryny, na sklejaniu/wp-admin
na końcu, ahome_url()
nie być wiarygodny tej lokalizacji.home_url()
Byłoby gdzie ustawiłeś swoją stronę poprzez ustawienie Ogólne> Ustawienia „Adres strony (URL)” pole.Pytanie 2
Tak więc, jeśli umieściłem mojego bloga
http://example.com/blog
iexample.com
jest to tylko statyczna strona, na której lubię motyw portfolio, byłby to scenariusz, który zgadza się z twoim pytaniem. W takim przypadku użyłbym tego fragmentu kodu:źródło
Jeśli chcesz, aby WP zainstalowano w katalogu, ale w katalogu głównym witryny w katalogu głównym domeny, musisz przenieść główny plik index.php do katalogu głównego domeny i edytować instrukcję wymaganą, aby wskazywała w katalogu.
Proces ten jest opisany tutaj: Nadawanie WordPressowi własnego katalogu .
źródło
home_url()
ponieważ jestem w trybie sieci wp. Dałem WordPressowi tylko jeden katalog i to po prostu mi się nie podobało. Ale jednak korzystam zwp_content_dir
niektórych stron.home/usr/public_html/site1
home/usr/public_html/site2
i tak dalej, a następniewp_content_dir
zwykle jest na cdnTLDR:
W niestandardowej instalacji możesz umieścić pliki WordPress w podkatalogu katalogu głównego witryny.
... i nadal pozwalaj odwiedzającym odwiedzającym na dostęp do twojej „witryny” WordPress z adresu URL domeny (katalogu głównego) witryny, bez dołączania nazwy podkatalogu:
(tj:
www.example.com
vs vswww.example.com/wordpress
):Gdzie wartość stałej WP ma pierwszeństwo przed wartością wp_options / WP Settings.
Różne konfiguracje dla WordPress
W najbardziej standardowych instalacjach WordPress
home_url
isite_url
będzie miał tę samą wartość.Niezależnie od tego reprezentują dwie różne rzeczy.
W niestandardowej instalacji mogą mieć różne wartości.
(
//
jestrelative
protokołem i będzie działał dla jednego / obuhttp://
lubhttps://
)Standardowe instalacje (w tym instalacje „jednym kliknięciem”)
home_url
: to strona główna Twojej witryny (wordpress), jak wskazano w pasku adresu użytkownika.site_url
: to katalog, w którym znajdują się twoje pliki WordPress.5-minutowa instalacja WordPress instaluje pliki wordpress. Te dwie wartości będą takie same - pliki wordpress zostaną zainstalowane w tym samym folderze, którego chcesz, aby użytkownicy korzystali z adresu Twojej witryny lub w części wordpress (blog) witryny serwera.
Przykład 1:
użytkownik uzyskuje dostęp do swojego bloga na:
www.example.com
,wordpress plików zainstalowanych na:
www.example.com
lub folderu głównego stronie serwera.home_url
===site_url
==="www.example.com"
Przykład 2:
użytkownik uzyskuje dostęp do swojego bloga na:
www.example.com/blog
,pliki wordpress zainstalowany pod adresem:
www.example.com/blog
lub wblog
folderze wewnątrz katalogu głównego witryny.home_url
===site_url
==="www.example.com/blog"
W tym przypadku
www.example.com
jest to główna strona internetowa iwww.example.com/blog
jest ona katalogiem głównym Twojego bloga.Tutaj Twój blog jest oddzielony i działa jako podzbiór Twojej głównej witryny.
W takim przypadku Twoja główna strona internetowa nie jest kontrolowana, definiowana ani stylizowana przez WordPress.
Tylko twój blog jest. Wszystkie adresy URL na Twoim blogu będą kontynuowane przez
www.example.com/blog
Uwaga: W dokumentacji „strona / witryna Wordpress” (w przeciwieństwie do po prostu „strona / strona internetowa”) odnosi się do katalogu, w którym zainstalowane są pliki WordPress. W tym przypadku jest
www.example.com/blog
- wszystko wblog
folderze. „Witryna WordPress” w tym scenariuszu nie jest taka sama jak domena, katalog główny lub główna witryna. Jest to podzbiór całej witryny. Coś jak strona internetowa w witrynie. Wspominam o tym, ponieważ terminologia może wydawać się niejasna lub myląca, biorąc pod uwagę tę szczególną konfigurację.Alternatywna konfiguracja instalacji WordPress
Nadawanie WordPressowi własnego katalogu , sekcja
Method II (With URL change)
.Na przykład wiele osób nie chce zapychać folderu głównego swojej witryny wszystkimi plikami Wordpress.
Chcą zainstalować wordpress w podkatalogu *, ale mają dostęp do „bloga” lub „strony WordPress” tak, jakby pliki zostały zainstalowane w katalogu głównym serwera na stronie.
Jest to szczególnie ważne, gdy WordPress jest używany do budowy i prowadzenia całej strony internetowej, która nawet nie ma „bloga”.
Przykład 3:
użytkownik uzyskuje dostęp do „blog” pod adresem:
www.example.com
,wordpress plików zainstalowanych na:
www.example.com/wordpress
lub folderu głównego stronie serwera.home_url
==="www.example.com"
site_url
==="www.example.com/wordpress"
(Uwaga: ta konfiguracja nie będzie działać „od razu po wyjęciu z pudełka” po prostu poprzez zmianę wartości tych zmiennych. Wymaga to dodatkowych zmian konfiguracji, aby działała poprawnie)
Zobacz Jak nadać WordPress własnemu katalogowi , rozdział zatytułowany
Method II (With URL change)
jak to zrobić.W tym przypadku
home_url
isite_url
powinny posiadać różne wartości.W tej konfiguracji, chcesz swoją stronę, aby działać dokładnie tak, jakby pliki WordPress zostały zainstalowane w katalogu głównym serwera na swojej stronie ...
ale dla celów organizacyjnych na serwerze,
ty rzeczywiście masz pliki WordPress w folderze o nazwie
wordpress
w serwującego katalog główny swojej witryny.Dlatego użytkownik wpisze,
www.example.com
aby uzyskać stronę główną WordPress, zamiastwww.example.com/wordpress
funkcja wordpress <--> zmienna bazy danych <--> Wordpress Constant
(Pozostałe przypadki są trywialne: wszystkie zmienne / funkcje zachowują / zwracają tę samą wartość.)
Jak ustawić wartości dlasite_url
ihome_url
Po pierwsze, proszę zauważyć, że
siteurl
ihome
przechowują wartości zwrócone przez powyższe funkcje1) Zwykle ustawiasz te wartości w panelu zaplecza / panelu kontrolnym / panelu administracyjnym
Settings -> General ->
siteurl
WordPress: Adres WordPress:https://www.example.com/wordpress
home
Adres strony:https://www.example.com
(nie dołączaj tutaj ukośników końcowych - które zostałyby skonfigurowane gdzie indziej)
2) Alternatywnie możesz ustawić te wartości w bazie danych WordPress:
wp_options
tabela ->(nie dołączaj tutaj ukośników końcowych - które zostałyby skonfigurowane gdzie indziej)
3) Edytuj swoją
wp-config.php
Zdefiniuj te określone stałe, aby zachować wartości
Zdefiniuj
WP_HOME
iWP_SITEURL
ustawienia, wstawiając te linie w góręwp-config.php
pliku:(nie dołączaj tutaj ukośników końcowych - które zostałyby skonfigurowane gdzie indziej)
Odniesienie: WP_SITEURL i WP_HOME
UWAGA: Jest to mylące
(naprawdę chciałbym, aby WordPress nazwał Ustawienia podobnymi do ich nazw php,
takich jak
Wordpress Site Address
iHome Page Address
lub coś bardziej wyraźnego, takiego jaklocation of WordPress Site core files
ibrowser url to access WordPress home page
)Teraz tutaj jest trudne!
JEŚLI zdefiniowałeś te stałe w swoim
wp-config.php
pliku, nie ma znaczenia, jakie wartości masz na stronie bazy danych / ustawień.W rzeczywistości nie będzie można zmodyfikować tej wartości za pośrednictwem zaplecza (zostanie wyszarzona). Nadal możesz modyfikować, edytując bazę danych, ale nie będzie to miało wpływu na twoją stronę, podczas gdy stałe istnieją w pliku wp-config.
Twój plik konfiguracyjny nie zmieni wartości w twojej bazie danych (lub stąd stronie ustawień). Zamiast tego wartości strony bazy danych / ustawień zostaną zignorowane . Wartości w wp-config zastępują ustawienia bazy danych lub są nadrzędne.
Więc ... aby zakończyć (TLDR):
Gdzie wartość stałej WP ma pierwszeństwo przed wartością wp_options / WP Settings.
Wartość rekordu wp_options i wartość ustawień WP są takie same.
Edycja jednego z definicji powoduje edycję drugiego.
To tylko 2 różne sposoby dostępu do tej samej zmiennej.
Z drugiej strony Stałe WordPress są wyjątkowe i niezależne.
Wewnętrznie stałe WordPress (PHP) zastępują ich odpowiedniki db.
Jeśli stała jest zdefiniowana w wp-config, nie zmienia bazy danych.
Ale wewnętrznie WordPress zawsze będzie preferował / używał swojej wartości zamiast db db.
źródło
Funkcje
site_url()
ihome_url()
są podobne i mogą prowadzić do nieporozumień w ich działaniu.Ta
site_url()
funkcja pobiera wartośćsiteurl
zwp_options
tabeli w bazie danych.To jest adres URL do podstawowych plików WordPress.
Jeśli twoje podstawowe pliki istnieją w podkatalogu
/wordpress
na twoim serwerze internetowym, wartością będziehttp://example.com/wordpress
.home_url()
Funkcja pobiera wartośćhome
wwp_options
tabeli w bazie danych.To jest adres, który chcesz odwiedzić, aby zobaczyć Twoją stronę internetową WordPress.
Jeśli twoje podstawowe pliki WordPress istnieją
/wordpress
, ale chcesz, aby URL twojej witryny byłhttp://example.com
wartością domową, powinien byćhttp://example.com
.źródło
Aby odpowiedzieć na drugie pytanie:
Nie możesz, chyba że weźmiesz Dawanie WordPressowi własnych kroków katalogu . Korzystanie z tego oznacza, że umieścisz podstawowe pliki WordPress w
/blog
lub,/WordPress
a następnieindex.php
w katalogu głównym.Jeśli zdecydujesz się umieścić WordPress we własnym katalogu, skorzystasz z niego,
home_url()
aby przejść doindex.php
isite_url()
uzyskać podstawowe pliki i tym podobne.Refrences:
Codex for
site_url
Codex for
home_url
Codex for Giving Wordpress Own Directory
źródło
Najprostszym sposobem na uzyskanie adresu URL strony bez podkatalogów ( http://example.com/ zamiast http://example.com/blog ), wystarczy użyć ukośnika odwrotnego /
Na przykład, jeśli wpiszesz:
Stworzy link do Twojej domeny
źródło
/
na tym miejscu, na innym miejscu, OP może oczekiwać podkatalogu zostać zwrócone. To zależy od konfiguracji WP dla każdej witryny.