Мені потрібно отримати URL-адресу мого каталогу тем, щоб вказати зображення в каталозі зображень / заголовків теми. Як це робиться в PHP?
Мені потрібно отримати URL-адресу мого каталогу тем, щоб вказати зображення в каталозі зображень / заголовків теми. Як це робиться в 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
домени, але кожен може зробити це вручну, відредагувавши хост-файл комп'ютера та? Файл httpd.conf.
До речі, якщо ви не знайомі з темами дитини, де є ще два відповіді WordPress, які можуть допомогти:
get_stylesheet_directory_uri()
. Чи повинен я використовувати звичайний ol ' 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-адреси.
Резюме:
get_template_directory_uri()
для позначення лише або батьківської темиget_stylesheet_directory_uri()
для тільки або дитячої теми