显示作为背景图像加载的图像,但不显示<img>%s

时间:2018-04-16 作者:Tobias Glaus

我遇到了一个奇怪的问题:首先,我提供了我的文件夹结构:

 wp-content/themes/theme
    ├──content.php
    ├──footer.php
    ├──functions.php
    ├──header.php
    ├──home.php
    ├──index.php
    ├──page.php
    ├──main.js
    ├──style.css
    │
    ├── media/
    │   └── img/
    │       ├── beach.mp4
    │       ├── contact-1.jpg
    │       └── offers-1.jpg
    │
    └── scripts/
        └── map.js
所以,在我的style.css 我定义了如下背景图像:

background-image:url(\'media/img/offers-1.jpg\');
它显示得很好,但无论我从index.php (其中加载content.php) 找不到,也就是说,我有一个像这样的普通图像

<img src="media/img/contact-1.jpg">
未找到,错误如下:

GET http://url/newer/media/img/contact-1.jpg 404 (Not Found)
与相同map.js, main.js 还有其他一些图片。

有人知道我做错了什么吗?

2 个回复
最合适的回答,由SO网友:Ibrahim Mohamed 整理而成

css文件中的相对路径相对于css文件位置,但在PHP中,它们相对于网站URL,而不是服务器中的PHP文件位置。

因此,为了确保为要加载到PHP文件中的任何资源获得正确的URL,可以使用函数get_template_directory_uri()像这样:

"<?php echo get_template_directory_uri(); ?>":

例如,在img 属性src 将是:

<img src="<?php echo get_template_directory_uri(); ?>/media/img/contact-1.jpg" />

js文件和css文件也是如此。

Notice:如果使用子主题,请改用此函数get_stylesheet_directory_uri() 同样的方式:

<img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/img.jpg" />

否则get_template_directory_uri() 在这种情况下,函数只返回当前parent 主题URL,而不是在本例中使用的子主题的URL。

SO网友:wpdev

如果您在任何php文件中使用标记,只需使用get_template_directory_uri()

<img src="<?php echo get_template_directory_uri(); ?>/img/contact-1.jpg">

结束