Мне нужно получить URL моей директории темы, чтобы ссылаться на изображение в директории image / headers темы. Как это делается в PHP?
theme-development
Майкл Креншоу
источник
источник
get_template_directory_uri()
Что @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, которые могут помочь:
источник
get_stylesheet_directory_uri()
. Должен ли я использовать обычный старыйget_stylesheet_directory()
?Вся структура темы основывается на двух параметрах -
template
(удерживая папку родительской темы namre) иstylesheet
(удерживая папку дочерней темы namr). Если не используется дочерняя тема, это то же самое.Чтобы иметь гибкость фильтров, а не возможность доступа напрямую, существуют соответственно
get_template()
иget_stylesheet()
.Теперь единственное, чего не хватает, это объединить их с расположением папки тем. Это можно сделать с помощью
get_theme_root_uri()
и снова удобно завернуть вget_template_directory_uri()
иget_stylesheet_directory_uri()
.[get_]bloginfo()
сtemplate_directory
илиstylesheet_directory
аргументы просто обертывают их, и нет особых оснований использовать его таким образом. Я бы сказал, что сбивает с толку только наличие аргумента, говорящего каталог (обычно относится к локальным путям), но возвращающего URL.Sumary:
get_template_directory_uri()
для ссылки только на родительскую темуget_stylesheet_directory_uri()
для только или детской темыисточник
Я использую это
(dirname(get_bloginfo('stylesheet_url')))
источник