如何在PHP中检测WordPress路径外的文件夹是否存在?
解决WordPress中目录存在检测失败的问题
问题根源
你之前的代码有两个核心错误:
- 不能用URL检测:
file_exists()函数不支持HTTP/HTTPS URL,只能识别服务器本地的文件/目录路径。 - 相对路径错误:直接用
$dir . $type会基于当前主题文件所在目录(public_html/wp-content/themes/theme-child/)去查找,实际找的是public_html/wp-content/themes/theme-child/myfiles/music/rock,和你目标路径不符。
正确代码实现
WordPress内置了ABSPATH常量,它代表网站根目录(也就是public_html/)的绝对路径,用它来拼接目标路径就能准确找到目录:
$dir = 'myfiles/music/'; $type = 'rock'; // 拼接服务器端绝对路径 $target_dir = ABSPATH . $dir . $type; // 先检测路径存在,再确认是目录 if (file_exists($target_dir) && is_dir($target_dir)) { echo "The directory exists."; } else { echo "error"; }
补充说明
ABSPATH是WordPress初始化时就定义的常量,无需额外设置,确保在主题函数文件中可以直接使用。- 如果需要兼容Windows服务器,建议用
DIRECTORY_SEPARATOR代替手动写斜杠,适配不同系统的路径分隔符:
$target_dir = ABSPATH . 'myfiles' . DIRECTORY_SEPARATOR . 'music' . DIRECTORY_SEPARATOR . $type;
内容的提问来源于stack exchange,提问作者SubZer0
相关产品推荐
相关产品推荐

