Как лучше всего подключать изображения из папки images шаблона?

12 авг. 2010 г., 18:32:16
Просмотры: 13.7K
Голосов: 8

Как лучше всего подключать изображения из папки images шаблона? Использовать get_bloginfo('template_url')? Я понял, что лучше хардкодить путь к папке с изображениями, так как это уменьшает количество вызовов функций в PHP..

Какие мысли?

0
Все ответы на вопрос 5
1

Я понял, что лучше жестко прописывать путь к папке с изображениями, так как это позволяет сэкономить на вызовах функций в PHP.

Я бы точно не стал беспокоиться о вызовах функций - кеш объектов WordPress отлично справится с кешированием всего этого. Вы можете определить путь как константу, если хотите, но лично я обычно не заморачиваюсь.

Я бы просто сделал:

<img src="<?php bloginfo('stylesheet_directory')"?>/images/image.png" />

я отредактировал это на

<img src="<?php bloginfo('stylesheet_directory');?>/images/image.png" /> (вышеуказанное вызывает ошибки)

12 авг. 2010 г. 18:53:18
Комментарии

Несколько замечаний: во-первых, я бы использовал get_stylesheet_directory_uri() вместо bloginfo( 'stylesheet_directory' ); во-вторых, если изображение не предназначено для переопределения через Дочернюю Тему, тогда я бы использовал get_template_directory_uri().

Chip Bennett Chip Bennett
9 февр. 2012 г. 15:48:54
5

Самый простой и лёгкий способ сделать это — определить уникальную переменную в файле functions.php вашей темы.

Например:

<?php
$theme_name_images = get_bloginfo('stylesheet_directory') . '/images/';
?>

Нет необходимости использовать классы, как предлагалось в предыдущем ответе.

ПРИМЕЧАНИЕ: Следует использовать get_bloginfo вместо bloginfo(), как правильно заметил Viper007Bond.

12 авг. 2010 г. 18:58:08
Комментарии

Но это может загрязнить глобальное пространство имен.

WhIteSidE WhIteSidE
12 авг. 2010 г. 19:03:31

Верно, но это самый простой способ. Я не говорил, что это самый чистый вариант.

john010117 john010117
12 авг. 2010 г. 19:52:12

Да, но проблема с загрязнением глобального пространства имен возникает только в том случае, если он не использует хорошее соглашение об именах для своих переменных. Например, он мог бы использовать amits_stylesheet_directory и amits_template_url или вместо "amits" использовать имя клиента.

MikeSchinkel MikeSchinkel
12 авг. 2010 г. 19:52:22

bloginfo() выводит данные. Вам нужна функция get_bloginfo(), которая возвращает данные.

Viper007Bond Viper007Bond
12 авг. 2010 г. 22:37:48

@Viper007Bond - Спасибо. Я исправил свой пост.

john010117 john010117
13 авг. 2010 г. 01:44:36
0

@Amit: Это зависит от ситуации. Большинство вызовов функций в PHP выполняются достаточно быстро, поэтому если вас беспокоит производительность, я бы не стал слишком заострять на этом внимание. Однако я понимаю ваши чувства, когда видишь все эти вызовы. Тем не менее, я бы никогда не рекомендовал жестко прописывать пути в коде.

Если вы планируете часто использовать get_bloginfo('template_url') в своей теме, почему бы не присвоить его значение глобальной переменной в файле functions.php, а затем обращаться к ней везде, где вам нужно? Убедитесь, что вы выбрали уникальное имя переменной, которое вряд ли вызовет конфликты, например amits_template_url. Вот как это можно сделать в functions.php:

global $amits_template_url;
$amits_template_url = get_bloginfo('template_url');

После этого в своей теме вы можете использовать эту переменную везде, где раньше вызывали функцию get_bloginfo('template_url').

12 авг. 2010 г. 19:49:25
1

Ну, это зависит от того, какой разработкой вы занимаетесь. Если вы разрабатываете плагины, вам нужно использовать функции, потому что вы никогда не можете быть уверены в структуре URL. Если вы работаете над конкретным сайтом, технически допустимо жестко прописывать URL, но это всё равно не рекомендуется, так как исключает возможность изменения структуры URL в будущем.

Когда я разрабатываю плагины или темы, я организую программу в виде класса; таким образом, я могу сохранять повторяющиеся значения как свойства объекта (например, WP URL и template_url). Это позволяет мне быстро их использовать без повторного вызова функций.

12 авг. 2010 г. 18:39:03
Комментарии

Моей целью была разработка конкретной темы для конкретного клиента (не "распространяемой" темы), можете ли вы привести пример кода для такого класса?

Amit Amit
12 авг. 2010 г. 18:41:32
0

Просто укажите ссылки на файлы изображений в вашем CSS файле, это означает, что вы можете использовать относительный путь от CSS файла до изображений. Это решение только на CSS. Код PHP не требуется. Вся работа выполняется браузером.

24 авг. 2010 г. 17:58:36