Wordpress:使用 glob() returns 一个空数组
Wordpress: Using glob() returns an empty array
我正在尝试从指定目录中提取所有图像,然后显示它们。我在常规网站中使用了下面的代码并且它有效
<?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>';
}?>
- 我检查过文件夹中有图片
- 我已经完成了 var_dump,我找到了正确的路径。
- var_dump 在 glob($images) 上给出 array(0){ }
- 我也找过其他 threads 有这个问题,但仍然没有
请提供任何帮助。
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 );
}
您第二次尝试时还有一个问题值得指出。您不能使用函数来设置常量的值。
我正在尝试从指定目录中提取所有图像,然后显示它们。我在常规网站中使用了下面的代码并且它有效
<?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>';
}?>
- 我检查过文件夹中有图片
- 我已经完成了 var_dump,我找到了正确的路径。
- var_dump 在 glob($images) 上给出 array(0){ }
- 我也找过其他 threads 有这个问题,但仍然没有
请提供任何帮助。
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 );
}
您第二次尝试时还有一个问题值得指出。您不能使用函数来设置常量的值。