Potrzebuję uzyskać adres URL mojego katalogu motywu, aby odwoływał się do obrazu w katalogu image / headers motywu. Jak to się robi w PHP?
Potrzebuję uzyskać adres URL mojego katalogu motywu, aby odwoływał się do obrazu w katalogu image / headers motywu. Jak to się robi w PHP?
Odpowiedzi:
Ta funkcja zwróci adres URL katalogu motywów, dzięki czemu będzie można go używać w innych funkcjach:
get_bloginfo('template_directory');
Alternatywnie ta funkcja wyśle echo adresu URL katalogu motywów do przeglądarki:
bloginfo('template_directory');
Przykładem obrazu w images/headers
folderze motywów byłoby:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Co powiedział @EAMann , z zastrzeżeniem. Eric ma rację co do ogólnego podejścia oraz tego, jak funkcje bloginfo()
i get_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 Erica stylesheet_directory
wyglądałoby tak ( Skróciłem przykład, aby się nie zawijał):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
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:
<?php
/*
* test.php - Test the difference between Regular and Child Themes
*
*/
include "wp-load.php";
$bloginfo_params = array(
'admin_email',
'atom_url',
'charset',
'comments_atom_url',
'comments_rss2_url',
'description',
'home',
'html_type',
'language',
'name',
'pingback_url',
'rdf_url',
'rss2_url',
'rss_url',
'siteurl',
'stylesheet_directory',
'stylesheet_url',
'template_directory',
'template_url',
'text_direction',
'url',
'version',
'wpurl',
);
echo '<table border="1">';
foreach($bloginfo_params as $param) {
$info = get_bloginfo($param);
echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
}
echo '</table>';
Jeśli zauważysz rzeczy, możesz zauważyć, że jest o wiele więcej do tego, co możesz przekazać bloginfo()
i get_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 )
Dla przejrzystości tego zrzutu ekranu
wp30.dev
jest to domena, która działa tylko na moim komputerze lokalnym. Jest to obecnie instancja WordPress 3.0.1 i jest skonfigurowana w127.0.0.1
(tak samo jaklocalhost
) na moim laptopie i używam go do testowania takich przykładów ad-hoc. Użyłem VirtualHostX jako wygody w Mac OS X, aby pomóc mi skonfigurować te prywatne.dev
domeny, które nie są routowalne , ale każdy może to zrobić ręcznie, edytując plik hosts komputera i? plik httpd.conf.
Nawiasem mówiąc, w przypadku, gdy nie znasz tematów podrzędnych, gdzie są dwie inne odpowiedzi WordPress, które mogą pomóc:
get_stylesheet_directory_uri()
. Czy powinienem używać zwykłego starego get_stylesheet_directory()
?
Cała struktura motywu opiera się na dwóch opcjach - template
(przytrzymanie nazwy folderu motywu nadrzędnego) i stylesheet
(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()
i get_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 w get_template_directory_uri()
i get_stylesheet_directory_uri()
.
[get_]bloginfo()
z argumentami template_directory
lub stylesheet_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