Мне нужно получить URL моей директории темы, чтобы ссылаться на изображение в директории image / headers темы. Как это делается в PHP?
Мне нужно получить URL моей директории темы, чтобы ссылаться на изображение в директории image / headers темы. Как это делается в PHP?
Ответы:
Эта функция возвращает URL каталога темы, чтобы вы могли использовать его в других функциях:
get_bloginfo('template_directory');
Кроме того , эта функция будет эхо в URL каталогов темы в браузер:
bloginfo('template_directory');
Таким образом, пример для изображения в images/headers
папке тем будет:
<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
get_template_directory_uri()
Что @EAMann сказал, с оговоркой. Эрик прав в отношении общего подхода, а также о том, как работают функции bloginfo()
и как get_bloginfo()
и о том, как передать параметр, 'template_directory'
чтобы получить значение, необходимое для (большинства) тем.
Однако есть предостережение, и это предостережение относится к более новым темам для детей . Если вы используете дочернюю тему, то 'template_directory'
, вероятно, это не то, что вам нужно, если вы на самом деле не пытаетесь сослаться на изображение, которое находится в каталоге родительской темы. Вместо дочерних тем, что вы, вероятно, хотите, чтобы передать stylesheet_directory
(я знаю, я знаю, имена не говорят вам, что они, но эй, это просто так!) Заимствование несколько из ответа Эрика с использованием stylesheet_directory
будет выглядеть следующим образом ( Я сократил пример, чтобы он не переносился):
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />
Чтобы проиллюстрировать эту мысль, я написал быстрый автономный файл, который вы можете поместить в корневой каталог вашего сайта test.php
и запустить, чтобы посмотреть, что он выводит. Сначала запустите с обычной темой, такой как TwentyTen, затем запустите с дочерней темой:
<?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>';
Если вы заметили что-то, вы можете заметить, что есть еще много чего, что вы можете передать bloginfo()
и get_bloginfo()
; изучите код и скриншот ниже для идей.
Посмотрев на скриншот, вы увидите, что stylesheet_directory
возвращается то же самое, что и 'template_directory'
для обычной темы, но другое значение и, вероятно, значение, которое вам нужно для дочерней темы.
(источник: mikeschinkel.com )
Для ясности на этом скриншоте,
wp30.dev
это домен, который работает только на моем локальном компьютере. В настоящее время это экземпляр WordPress 3.0.1, и он настроен127.0.0.1
(так же, какlocalhost
) на моем ноутбуке, и я использую его для тестирования подобных примеров. Я использовал VirtualHostX для удобства в Mac OS X, чтобы помочь мне настроить эти частные немаршрутизируемые.dev
домены, но любой может сделать это вручную, отредактировав файл hosts на компьютере и? файл httpd.conf.
Кстати, в случае, если вы не знакомы с дочерними темами, где есть два других ответа 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()
для только или детской темы