PHP glob()在WordPress子页面上中断

时间:2013-02-22 15:40:02

标签: php jquery wordpress cycle glob

我一直在努力解决这个问题。

我有一个使用jQuery循环插件运行的图库,使用PHP glob()从文件夹中提取文件。问题是,当我导航到另一个页面时,由于在文件路径的开头添加了新页面的URL,图库会中断。

示例:

首页网址:http://localhost/project/image-display-images/image.jpg

其他网页网址:http://localhost/**NEWPAGE**/project/image-display-images/image.jpg

这是我的代码:

$files = glob('image-display-images/*.*');

       for ($i=1; $i<count($files); $i++)

       {
          $num = $files[$i];
          echo '<img src="'.$num.'"'.' alt="Campus Images" width="362" height="246"/>';
       }

这将为jQuery循环生成一个图像列表以进行滚动。它只适用于头版。

有什么想法吗?

解决!

这是我的新代码:

$files = glob(ABSPATH.'/image-display-images/*.*');

foreach ($files as $f) {
    echo '<image src="'.home_url(str_replace(ABSPATH,'',$f)).'"alt="Campus Images" width="362" height="246"/>';

}

这适用于所有页面。

谢谢!

2 个答案:

答案 0 :(得分:1)

使用绝对路径:

$files = glob(ABSPATH.'image-display-images/*.*');

WordPress核心设置ABSPATH常量,因此它应该相当可靠。

glob处理文件系统路径,但您正在尝试加载网址。要以您尝试的方式显示文件,您需要将结果转换为URL。这是一个简单的例子。

$files = glob(ABSPATH."*.*");
foreach ($files as $f) {
  echo home_url(str_replace(ABSPATH,'',$f));
}

您最好编写自己的函数来获取文件名,而不是依赖于glob,它会在某些系统上发出警告。请参阅:http://codex.wordpress.org/Filesystem_API

答案 1 :(得分:0)

定义图库的完整路径,而不是'image-display-images/*.*' 例如glob('/var/etc/www/image-display-images/*.*')