【问题标题】:PHP glob() breaks on WordPress sub pagesPHP glob() 在 WordPress 子页面上中断
【发布时间】:2013-02-22 15:40:01
【问题描述】:

我已经为此苦苦挣扎了一段时间。

我有一个使用 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"/>';

}

这适用于所有页面。

谢谢!

【问题讨论】:

  • 如果 image--display-images 是所有帖子的唯一文件夹,请尝试将绝对路径传递给 glob 函数。

标签: php jquery wordpress cycle glob


【解决方案1】:

使用绝对路径:

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

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

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

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

您最好编写自己的函数来获取文件名,而不是依赖于glob,它确实带有关于在某些系统上不可用的警告。见:http://codex.wordpress.org/Filesystem_API

【讨论】:

  • 这实际上给了我两个页面上的正确路径,但图像不显示。这是我最接近让它正常工作的方法。 $files = glob(ABSPATH.'image-display-images/*.*'); 更正:它在页面 url 上附加到图像链接,尽管它显示为正确的链接。似乎我需要以某种方式删除添加到图像链接的页面 url。嗯..
  • 查看我的编辑。另外,不要在 WordPress 中使用相对 URL。它们是持续痛苦的根源。始终创建完整的路径。
  • 谢谢!我会试试这个,看看我能得到什么。
【解决方案2】:

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

【讨论】:

  • 我试过这个,但没有积极的结果。这导致什么都没有出现。
猜你喜欢
  • 2013-01-22
  • 1970-01-01
  • 2015-01-17
  • 2017-01-11
  • 2018-05-11
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多