Почему не выводится изображение в шапку сайта?
Читал про относительные и абсолютные пути для вывода своего изображения и по итогу на локальном сервере у меня вылезло изображение в шапку сайта, а вот на оригинале нет. Почему так может быть?
Такая структура:
Папка с моей темой (MyTheme)
В ней лежит header.php, index.php и тд, а также папка assets, в папке assets лежит папка images и вот в этой папке уже мой файл в формате png.
Как только я не пробовал обратиться - изображения нет, есть только альтернативный текст. Почему так?
Я не хочу писать весь код начиная с папки www/wp-content, темы и там уже моя или как там, там очень длинно все. Можно же как-то сделать так, чтоб он искал изображение относительно себя?
Условно, вот если в папке моей темы лежит hedaer.php, то он начинал поиск именно с этой папки, в которой лежит, по идеи мне надо зайти в assets,а потом в image, но у меня он не показывает картинку, почему?
<?php $image_path = "/assets/images/MyTheme-Header.png"; // Я пробовал разные вариации и с точкой и без и тд, но все никак не сработало echo "<img src='$image_path' alt='MySite head icon'>"; ?> |
<?php $image_path = "/assets/images/MyTheme-Header.png"; // Я пробовал разные вариации и с точкой и без и тд, но все никак не сработало echo "<img src='$image_path' alt='MySite head icon'>"; ?>
Дополнительно:
Используйте функцию get_theme_file_uri()
$image_path = get_theme_file_uri( '/assets/images/MyTheme-Header.png' ); |
$image_path = get_theme_file_uri( '/assets/images/MyTheme-Header.png' );
Я не хочу писать весь код начиная с папки www/wp-content,
Пишите начиная с <?= get_stylesheet_directory_uri() ?>
Матчасть: https://developer.wordpress.org/reference/function...
Можно же как-то сделать так, чтоб он искал изображение относительно себя?
Фокус в том, что для сервера, точнее, php-скрипта, "относитесь себя" это одно место, а для браузера, которому предстоит показать картинку, это совсем другое. Поэтому абсолютная адресация лучше.
почему?
Потому что /assets/... для браузера это пусть от корня сайта. Про Тему как отдельную сущность браузер вообще ничего не знает, да и не должен, по большому счету.
- Вот так писать не нужно
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


В PHP-файлах темы путь вида
/assets/images/file.pngне означает “от папки темы”. В браузере такой путь считается от корня домена. Поэтому на локалке могло случайно сработать, а на боевом сайте — нет.Для изображения из папки темы используйте WordPress-функции:
<img src="<?php echo esc_url(get_template_directory_uri() . '/assets/images/logo.png'); ?>" alt="Логотип" >
Если у вас дочерняя тема, чаще нужен
get_stylesheet_directory_uri():<img src="<?php echo esc_url(get_stylesheet_directory_uri() . '/assets/images/logo.png'); ?>" alt="Логотип" >
Разница важная:
get_template_directory_uri()указывает на родительскую тему, аget_stylesheet_directory_uri()— на активную дочернюю.Проверьте также название папки: часто пишут
image, а реально папка называетсяimages, или наоборот. На Windows это может не бросаться в глаза, а на Linux регистр букв важен:Logo.pngиlogo.png— разные файлы.Откройте итоговый URL картинки в браузере. Если 404 — путь неверный. Если открывается, но в шапке только alt — смотрите CSS: изображение может быть скрыто, иметь нулевую ширину или перекрываться другим блоком.
Для фоновых изображений логика такая же, только путь лучше задавать относительно CSS-файла или выводить inline-style через PHP. Но для логотипов и обычных картинок в шаблоне используйте именно URL темы. Не используйте файловый путь сервера вроде
C:/xampp/...или/var/www/...в атрибутеsrc: браузер должен получать публичный URL, а не путь на диске.