Wordpress:使用glob()返回一个空数组

时间:2017-02-03 18:42:29

标签: php arrays wordpress glob

我正在尝试从指定目录中提取所有图像,然后显示它们。我在常规网站上使用了以下代码,它可以正常工作

<?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,我正在走正确的道路。
  • glob上的
  • var_dump($ images)给出了数组(0){}
  • 我还在寻找其他threads这个问题而且还没有找到

请提供任何帮助。

1 个答案:

答案 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 );
}

在你的第二次尝试中还有另一个值得指出的问题。您不能使用函数来设置常量的值。