Как получить URL-адрес темы в PHP?

Мне нужно, чтобы URL-адрес моего каталога темы ссылался на изображение в каталоге изображений /заголовков темы. Как это делается в PHP?

34 голоса | спросил mac9416 21 AM00000040000004331 2010, 04:46:43

4 ответа


43

Эта функция будет возвращать URL-адрес каталога темы, чтобы вы могли использовать ее в других функциях:

  get_bloginfo ( 'template_directory');
 

В качестве альтернативы, эта функция будет echo URL-адрес каталога темы в браузере:

  bloginfo ( 'template_directory');
 

Итак, примером для изображения в папке тем images /headers будет:

  <img src = "& lt;? php bloginfo ('template_directory');?> /images/headers/image.jpg" /& gt;
 
ответил EAMann 21 AM00000070000001131 2010, 07:19:11
32

Что означает @EAMann с предостережением. Эрик прав об общем подходе и о том, как работают функции bloginfo () и get_bloginfo () и о том, как передать параметр 'template_directory' чтобы получить значение, необходимое для (большинства) тем.

Однако существует оговорка и что caveat содержит более новые дочерние темы . Если вы используете дочернюю тему, то 'template_directory' , вероятно, не то, что вам нужно, если вы на самом деле не пытаетесь ссылаться на изображение, которое находится в каталоге родительской темы. Вместо этого для дочерних тем то, что вы, вероятно, хотите, это передать stylesheet_directory (я знаю, я знаю, что имена не говорят вам, каковы они, но эй, это так, как есть!) Заимствуя несколько Ответ Эрика с помощью stylesheet_directory будет выглядеть так (я сократил пример, чтобы он не обернулся):

  

<img src = "& lt;? php bloginfo ('stylesheet_directory');> /images/header.jpg" /& gt;

Чтобы проиллюстрировать, что я написал быстрый автономный файл, вы можете зайти в корневой каталог вашего сайта как test.php и запустить, чтобы посмотреть, что он выводит. Сначала запустите обычную тему, например TwentyTen, затем запустите с дочерней темой:

  & л;? PHP
/*
* test.php - Проверьте разницу между обычными и дочерними темами
*
* /

включить «wp-load.php»;

$ bloginfo_params = массив (
    'Admin_email',
    'Atom_url',
    «Кодировка»,
    'Comments_atom_url',
    'Comments_rss2_url',
    'описание',
    'Главная',
    'Html_type',
    «Язык»,
    'имя',
    'Pingback_url',
    'Rdf_url',
    'Rss2_url',
    'Rss_url',
    'адрес сайта',
    'Stylesheet_directory',
    'Stylesheet_url',
    'Template_directory',
    'Template_url',
    'Text_direction',
    'URL',
    'версия',
    'Wpurl',
);

echo '<table border = "1">';
foreach ($ bloginfo_params как $ param) {
    $ info = get_bloginfo ($ param);
    echo "<tr> <th> {$ param}: </th> <td> {$ info} </td> </tr>
}
echo '</table>';
 

Если вы заметили, что вы можете заметить, что есть намного больше того, что вы можете передать в bloginfo () и get_bloginfo () ; изучите код и снимок экрана ниже для идей.

Посмотрев на скриншот, вы можете увидеть, что stylesheet_directory возвращает то же самое, что и 'template_directory' для обычной темы, но другое значение и, вероятно, значение, которое вам нужно для детская тема.

Возвращаемые значения get_bloginfo () с дочерней темой и без нее в WordPress

  

Для ясности на этом скриншоте,    wp30.dev - это домен, который работает только   на моем локальном компьютере. В настоящее время   экземпляр WordPress 3.0.1 и его   настраивается в 127.0.0.1 (так же, как и    localhost ) на моем ноутбуке, и я использую его   для тестирования таких специальных примеров.   Я использовал VirtualHostX в качестве удобства в Mac OS X, чтобы помочь мне настроить те частные немаршрутизированные .dev , но каждый может сделать это вручную   редактирование файла хостов компьютера и   ? Файл httpd.conf.

Кстати, если вы не знакомы с дочерними темами , где находятся два других ответа WordPress, которые могут помочь:

ответил MikeSchinkel 21 PM00000020000002231 2010, 14:50:22
11

Вся структура темы строится поверх двух опций - template (содержит родительскую папку темы темы) и 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 () только для темы или только для детей
ответил Rarst 26 MarpmMon, 26 Mar 2012 23:59:56 +04002012-03-26T23:59:56+04:0011 2012, 23:59:56
-1

Я использую это (имя_директории (get_bloginfo ( 'stylesheet_url')))

ответил fja3omega 26 MarpmMon, 26 Mar 2012 23:31:05 +04002012-03-26T23:31:05+04:0011 2012, 23:31:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132