Почему не выводится изображение в шапку сайта?

Ссылка скопирована
1 ответ

Читал про относительные и абсолютные пути для вывода своего изображения и по итогу на локальном сервере у меня вылезло изображение в шапку сайта, а вот на оригинале нет. Почему так может быть?
Такая структура:
Папка с моей темой (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/... для браузера это пусть от корня сайта. Про Тему как отдельную сущность браузер вообще ничего не знает, да и не должен, по большому счету.

  • Вот так писать не нужно
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

В PHP-файлах темы путь вида /assets/images/file.png не означает “от папки темы”. В браузере такой путь считается от корня домена. Поэтому на локалке могло случайно сработать, а на боевом сайте — нет.

Для изображения из папки темы используйте WordPress-функции:

&lt;img
  src="&lt;?php echo esc_url(get_template_directory_uri() . '/assets/images/logo.png'); ?&gt;"
  alt="Логотип"
&gt;

&lt;img src="&lt;?php echo esc_url(get_template_directory_uri() . '/assets/images/logo.png'); ?&gt;" alt="Логотип" &gt;

Если у вас дочерняя тема, чаще нужен get_stylesheet_directory_uri():

&lt;img
  src="&lt;?php echo esc_url(get_stylesheet_directory_uri() . '/assets/images/logo.png'); ?&gt;"
  alt="Логотип"
&gt;

&lt;img src="&lt;?php echo esc_url(get_stylesheet_directory_uri() . '/assets/images/logo.png'); ?&gt;" alt="Логотип" &gt;

Разница важная: 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, а не путь на диске.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно