You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress无法正确指向目录,如何获取文件夹内文件名?

问题根源:URL vs 本地文件路径

我一眼就看出问题所在啦——你混淆了URL路径和服务器本地文件路径的区别!你用的get_template_directory_uri()返回的是主题目录的Web访问URL(比如https://your-site.com/wp-content/themes/your-theme/),而scandir()函数需要的是服务器上的本地文件系统路径(比如/var/www/html/wp-content/themes/your-theme/)。用URL去调用scandir()当然读不到文件啦!

修复方案

把获取路径的函数换成get_template_directory(),它会返回主题目录的绝对本地路径。下面是修正后的完整代码:

// 获取主题目录的本地绝对路径
$location = get_template_directory();
// 拼接目标文件夹路径
$dir = $location . '/slider/images/';

// 先检查目录是否存在,避免报错
if (is_dir($dir)) {
    // 读取目录文件(按逆序排列)
    $files2 = scandir($dir, 1);
    // 过滤掉.和..这两个默认条目
    $files2 = array_diff($files2, array('.', '..'));
    print_r($files2);
} else {
    echo "目标目录不存在,请检查路径是否正确!";
}
额外注意事项
  • 如果你用的是子主题,请把get_template_directory()换成get_stylesheet_directory(),因为前者指向父主题路径,后者才是子主题的本地路径。
  • 确保服务器的PHP进程有该目录的读取权限,如果权限不足,scandir()也会返回错误。
  • 如果你需要在前端展示这些图片的URL,可以在拿到文件名后,用get_template_directory_uri()拼接成可访问的URL:
    foreach ($files2 as $file) {
        $image_url = get_template_directory_uri() . '/slider/images/' . $file;
        echo "<img src='$image_url' alt='' />";
    }
    

内容的提问来源于stack exchange,提问作者user9419091

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:40