Potrzebuję uzyskać adres URL mojego katalogu motywu, aby odwoływał się do obrazu w katalogu image / headers motywu. Jak to się robi w PHP?
theme-development
Michael Crenshaw
źródło
źródło
get_template_directory_uri()
Co powiedział @EAMann , z zastrzeżeniem. Eric ma rację co do ogólnego podejścia oraz tego, jak funkcje
bloginfo()
iget_bloginfo()
działanie oraz jak przekazać parametr,'template_directory'
aby uzyskać wartość potrzebną dla (większości) motywów.Istnieje jednak pewien wyjątek i że zastrzeżenie jest z nowszych tematów Rodziny . Jeśli używasz motywu podrzędnego,
'template_directory'
prawdopodobnie nie jest to, czego chcesz, chyba że faktycznie próbujesz odwołać się do obrazu znajdującego się w katalogu motywów nadrzędnych. Zamiast tego w przypadku motywów podrzędnych prawdopodobnie chcesz przekazaćstylesheet_directory
(wiem, wiem, że imiona nie mówią, jakie są, ale hej, tak po prostu jest!) Pożyczanie nieco z odpowiedzi Ericastylesheet_directory
wyglądałoby tak ( Skróciłem przykład, aby się nie zawijał):Aby zilustrować tę kwestię, napisałem szybki samodzielny plik, możesz upuścić w katalogu głównym swojej witryny jako
test.php
i uruchomić, aby zobaczyć, co wyprowadza. Najpierw uruchom ze standardowym motywem, takim jak TwentyTen, a następnie uruchom z motywem potomnym:Jeśli zauważysz rzeczy, możesz zauważyć, że jest o wiele więcej do tego, co możesz przekazać
bloginfo()
iget_bloginfo()
; zapoznaj się z kodem i zrzutem ekranu poniżej, aby znaleźć pomysły.Patrząc na zrzut ekranu, możesz zobaczyć, że
stylesheet_directory
zwraca to samo, co'template_directory'
dla zwykłego motywu, ale inną wartość i prawdopodobnie wartość, której potrzebujesz dla motywu potomnego.(źródło: mikeschinkel.com )
Nawiasem mówiąc, w przypadku, gdy nie znasz tematów podrzędnych, gdzie są dwie inne odpowiedzi WordPress, które mogą pomóc:
źródło
get_stylesheet_directory_uri()
. Czy powinienem używać zwykłego staregoget_stylesheet_directory()
?Cała struktura motywu opiera się na dwóch opcjach -
template
(przytrzymanie nazwy folderu motywu nadrzędnego) istylesheet
(przytrzymanie nazwy folderu motywu podrzędnego). Jeśli nie jest używany motyw potomny, są one takie same.Aby mieć elastyczność filtrów, zamiast bezpośredniego dostępu do opcji, istnieją odpowiednio
get_template()
iget_stylesheet()
.Teraz brakuje tylko połączenia tych z lokalizacją folderu motywów. Można to zrobić za pomocą
get_theme_root_uri()
i ponownie wygodnie opakowane wget_template_directory_uri()
iget_stylesheet_directory_uri()
.[get_]bloginfo()
z argumentamitemplate_directory
lubstylesheet_directory
po prostu je owija i nie ma powodu, aby z tego korzystać Powiedziałbym, że jest to mylące, ponieważ argument mówiący o katalogu (zwykle odnosi się do lokalnych ścieżek), ale zwraca adresy URL.Sumaryczny:
get_template_directory_uri()
aby odwołać się tylko do motywu nadrzędnego lub tylko do niegoget_stylesheet_directory_uri()
do lub motywu podrzędnegoźródło
używam tego
(dirname(get_bloginfo('stylesheet_url')))
źródło