我正在尝试通过这样做从文件夹中加载所有图像:
<?php
$dirname = "/../../../properties-frontpage/";
$images = glob($dirname."*.*");
foreach($images as $image) {
echo '<div class="item" style="background-image:url(' . $image . ')" ></div>';
}
echo '<pre>';
var_dump($images);
echo '</pre>';
?>
但是,它返回一个空数组,这让我发疯,我可能以错误的方式定义$dirname
,但无法弄清楚如何。
谢谢大家
编辑 01
代码编写在包含中,该包含位于名为 includes
的文件夹中这是我的文件夹结构:
AWF>包括> WP 内容>主题
properties-frontpage
文件夹位于wp-content
文件夹中。
包含包含在"我的AWF
主题"文件夹中的"front-page.php
"中。
所以我需要走三层,对吧?
编辑 02多亏了Stefan Gehrig的解决方案,我现在输出了这些url: /Users/boriskamp/Documents/Local Websites/MijnAWF/wp-content/themes/AWF/includes/../../../properties-frontpage/12.jpg
我怎样才能把它们变成
/Users/boriskamp/Documents/Local Websites/MijnAWF/wp-content/properties-frontpage/12.jpg
这样他们作为src
工作?
相对路径必须相对于正在执行的脚本而不是相对于包含的脚本定义。有时这很难弄清楚,我不是WP专家。大多数情况下,使用包含的文件时,在已知的绝对路径上透视相对路径更容易。有一个__DIR__
常量始终指向当前文件所在的目录。
所以你可以做这样的事情
$dirname = __DIR__."/../../../properties-frontpage/";
这将解决类似
/<<absolute path>>/wp-content/themes/AWF/includes/../../../properties-frontpage/
关于编辑02:
删除..
遍历可以使用realpath()
来完成(请阅读有关符号链接发生的文档,以防目标路径不存在(。但是,使路径可通过 Web 服务器访问更为复杂。您不能简单地假设您只需要剥离/Users/boriskamp/Documents/Local Websites/
部分,使路径相对于文档根目录。根据您的服务器配置(例如别名或路径映射(,此任务会变得任意复杂,并且超出了原始问题的范围。也许有一个WP助手可以做到这一点 - 我不知道。
改用这段代码:
<?php
$dirname = "../../../properties-frontpage/"; // Remove the first /
$images = glob($dirname."*.*");
foreach($images as $image) {
echo '<div class="item" style="background-image:url(' . $image . ')" ></div>';
}
echo '<pre>';
var_dump($images);
echo '</pre>';
?>