我正在尝试从指定目录中提取所有图像,然后显示它们。我在常规网站上使用了以下代码,它可以正常工作
<?php $dirname = "images/tile/tile2/";
$images = glob($dirname."*.jpg");
foreach($images as $image) {
echo '<li><img src="'.$image.'" /><br /></li>';
}?>
我现在已经移动了这段代码并将其修改为wordpress站点,我得到一个空数组。
<?php $dirname = get_template_directory_uri()."/images/tile/tile1/";
$images = glob($dirname. "*.jpg");
//$images = glob($dirname."*. {jpg}", GLOB_BRACE); - tried with GLOB_RACE
foreach($images as $image) {
echo '<li><img src="'.$image.'" /><br /></li>';
}?>
第二个代码
<?php define('ACCREDPATH', get_template_directory_uri() . '/images/tile/tile1/');
$images = glob(ACCREDPATH. "*.jpg");
//$images = glob(ACCREDPATH. "*. {jpg}", GLOB_BRACE); - tried with GLOB_RACE
foreach($images as $image) {
echo '<li><img src="'.$image.'" /><br /></li>';
}?>
请提供任何帮助。
答案 0 :(得分:1)
glob
适用于本地路径而非URL。该函数需要能够访问服务器的文件系统,它无法远程执行(通过URL)。
http://php.net/manual/en/function.glob.php
您在工作代码中提供的路径是相对的。它起作用,因为它既可以用作文件路径,也可以用作URL。
要通过主题的绝对路径获得相同的结果,您需要使用get_template_directory()
。在提供的示例中,我使用get_template_directory()
来获取绝对路径,并使用get_template_directory_uri()
作为URL输出。
示例:
$theme_img_path = '/images/tile/tile1/';
$images = glob( get_template_directory() . $theme_img_path . '*.jpg' );
foreach ( $images as $image ) {
// Convert the filename into an absolute URL.
echo get_template_directory_uri() . $theme_img_path . basename( $image );
}
在你的第二次尝试中还有另一个值得指出的问题。您不能使用函数来设置常量的值。