我正在创建一个单页子主题,在这个主题中(向Wordpress社区致歉),我基本上尽量不使用PHP或Wordpress API,因为我真的只想部署一个具有自己脚本和样式的单页。
我的相对文件路径有问题。我发现,当涉及到PHP页面时,我需要使用get_theme_file_uri()
函数,这在我的PHP主页(page my slug.PHP)中运行良好。(作为旁注,我更愿意使用get_template_directory_uri()
但这是给父主题文件夹。怎么绕过这个?[编辑:此部分已解决])
但是我的CSS文件(如图像)的解决方案是什么?This page 建议我应该能够在那里插入相对链接,但这对我不起作用。
我正在将样式表直接链接到page-my-slug.php
, 因为我想完全覆盖父主题样式,不想深入了解排队的细节:
<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(); ?>/style.css">
<!-- or, for exactly the same effect... -->
<link rel="stylesheet" type="text/css" href="<?php echo get_theme_file_uri(\'style.css\'); ?>">
在我的
style.css
例如,我正在使用:
#ffw {
background-image: url(images/ffw.png);
}
但是,在加载页面时,我遇到了一个错误:
GET https://domain.com/images/ffw.png 404 ()
这表明它正在根目录中查找,而不是相对于样式表。
我做错了什么?我想知道这是否与我直接链接CSS而不是将其排队有关。。。
SO网友:Jacob Peattie
CSS中的相对路径是相对于样式表文件的。因此,如果你有这种结构:
- style.css
- images/
-- logo.png
-- background.jpg
那么CSS中图像的路径将是
url(images/logo.png)
和
url(images/background.jpg)
. 这是因为CSS中的相对路径是相对于样式表本身的,而不是相对于主域的(如果需要,请以斜杠开始:
url(/images/logo.png)
).
所有这些都不受您选择将文件排队的方式的影响。
你可能会出错的地方是你提到了一个家长主题。如果您试图从父主题加载图像,那么像上面的示例那样的相对路径将不起作用。CSS对父/子主题关系没有任何知识或概念。
因此,如果目录结构如下所示:
- parent-theme/
-- images/
--- logo.png
- child-theme/
-- style.css
-- images/
--- background.jpg
因此,如果你想进入一个目录,然后进入父目录,你的路径需要
url(../parent-theme/images/logo.png)
.