我需要加载一些本地图像。。我以前使用此代码加载一些图像
<?php
function loopImages(){
$imagePath = get_stylesheet_directory()."/IMAGES/sponsors/";
$filesList =glob($imagePath.\'*.{JPG,jpg,PNG,png}\', GLOB_BRACE);
echo $filesList;
foreach($filesList as $file){
echo \'<img src="\'.$file.\'">\';
}
}
loopImages();
?>
这几乎奏效了。我可以循环浏览文件,浏览器可以渲染8个img标记,但它显示它无法加载本地图像,所以我更改了
get_stylesheet_directory()
到
get_stylesheet_directory_uri()
像这样
function loopImages(){
$imagePath = get_stylesheet_directory_uri()."/IMAGES/sponsors/";
$filesList =glob($imagePath.\'*.{JPG,jpg,PNG,png}\', GLOB_BRACE);
echo $filesList;
foreach($filesList as $file){
echo \'<img src="\'.$file.\'">\';
}
}
loopImages();
但是,它没有显示任何内容。什么都没有。我做错了什么?如何渲染本地图像?
最合适的回答,由SO网友:Tom J Nowell 整理而成
get_stylesheet_directory
对于glob
函数要工作,您需要两者的组合,例如,获取该目录中的文件:
$imagePath = get_stylesheet_directory() . "/IMAGES/sponsors/";
$filesList = glob( $imagePath . \'*.{JPG,jpg,PNG,png}\', GLOB_BRACE );
并在该URL处显示文件:
$imagePathURL = get_stylesheet_directory_uri() . "/IMAGES/sponsors/";
...
echo \'<img src="\' . esc_url( $imagePathURL . basename( $file ) ) . \'">\';
注意我把它包起来了
esc_url
, 这就是逃跑,我们这样做是为了确保安全,避免注射攻击。
TLDR:
glob
需要文件夹路径,但<img
想要一个URL