Мне нужно получить URL-адрес каталога моей темы, чтобы ссылаться на изображение в каталоге image/headers темы. Как это делается в PHP?
Share
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Эта функция вернет URL-адрес каталога темы, чтобы вы могли использовать его в других функциях:
Кроме того, эта функция будет отображать URL-адрес каталога темы в браузере:
Таким образом, пример изображения в
images/headers
папке тем будет таким:ПРИМЕЧАНИЕ. Это даст вам путь к родительской теме, если вы в настоящее время используете дочернюю тему, а не активную дочернюю тему. Более подробный ответ ниже объясняет это более подробно.
Вы можете просто использовать
get_template_directory_uri()
Вау, отличный ответ. Я был ленив с темой, над которой сейчас работаю, и не стал устанавливать дочернюю тему, но это очень поможет в будущем. Поздравляю и с этим сценарием. Хорошо закодировано. Спасибо!
Привет, хороший ответ! Я обычно использую
get_stylesheet_directory_uri()
. Должен ли я использовать обычный старыйget_stylesheet_directory()
?Нет объяснения, почему это лучше, чем другие решения?
То, что сказал @EAMann, с оговоркой. Эрик прав в отношении общего подхода и того, как работают функции
bloginfo()
иget_bloginfo()
как передать параметр'template_directory'
, чтобы получить значение, необходимое для (большинства) тем.Однако есть одно предостережение, и это предостережение относится к более новым дочерним темам. Если вы используете дочернюю тему, то
'template_directory'
, вероятно, это не то, что вам нужно, если только вы на самом деле не пытаетесь сослаться на изображение, которое находится в каталоге родительской темы. Вместо дочерних тем вы, вероятно, захотите пройтиstylesheet_directory
(я знаю, я знаю, имена не говорят вам, что они собой представляют, но эй, так оно и есть!) Немного заимствования из ответа Эрика с использованиемstylesheet_directory
будет выглядеть так ( Я сократил пример, чтобы он не переносился):Чтобы проиллюстрировать это, я написал быстрый автономный файл, который вы можете поместить в корень вашего веб-сайта
test.php
и запустить, чтобы посмотреть, что он выводит. Сначала запустите обычную тему, например TwentyTen, затем запустите дочернюю тему:Если вы замечаете вещи, вы можете заметить, что есть гораздо больше того, к чему вы можете перейти
bloginfo()
иget_bloginfo()
; изучите код и скриншот ниже для идей.Глядя на скриншот, вы можете видеть, что он
stylesheet_directory
возвращает то же самое, что и'template_directory'
для обычной темы, но с другим значением и, вероятно, значением, которое вам нужно для дочерней темы.(источник: mikeschinkel.com )
Кстати, если вы не знакомы с дочерними темами, вот два других ответа WordPress, которые могут вам помочь:
Вся структура темы строится на основе двух вариантов —
template
(содержание папки родительской темы namre) иstylesheet
(содержание папки дочерней темы namr). Если дочерняя тема не используется, они одинаковы.Чтобы иметь гибкость фильтров, а не вариант доступа напрямую, соответственно есть
get_template()
иget_stylesheet()
.Теперь единственное, чего не хватает, — это объединить их с расположением папки тем. Это можно сделать с помощью
get_theme_root_uri()
and, опять же удобно завернутого вget_template_directory_uri()
andget_stylesheet_directory_uri()
.[get_]bloginfo()
withtemplate_directory
orstylesheet_directory
arguments просто обертывают их, и нет особых причин использовать их таким образом. Я бы сказал, что это сбивает с толку только тем, что аргумент указывает каталог (обычно относится к локальным путям), но возвращает URL-адреса.Резюме:
get_template_directory_uri()
для ссылки только на родительскую темуget_stylesheet_directory_uri()
для дочерней темыя использую это
(dirname(get_bloginfo('stylesheet_url')))