【问题标题】:Wordpress: Using glob() returns an empty arrayWordpress:使用 glob() 返回一个空数组
【发布时间】:2017-06-21 05:19:40
【问题描述】:

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

<?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($images) 上的 var_dump 给出 array(0){ }
  • 我也找过其他 threads 有这个问题,但还是一无所获

请提供任何有用的帮助。

【问题讨论】:

    标签: php arrays wordpress glob


    【解决方案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 );
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 2019-11-12
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多