2026-10-27 12:20:13
在WordPress中使用file_exists函数检查文件是否存在时,需注意以下关键点及解决方案:
核心问题原因获取主题绝对路径使用get_template_directory()获取主题根目录的绝对路径(如/var/www/html/wp-content/themes/your-theme),而非URL。
拼接完整文件路径将绝对路径与文件相对路径拼接,形成完整的绝对路径:
$file_path = get_template_directory() . '/src/javascript/pages/linksCount.js';检查文件是否存在通过file_exists($file_path)判断文件是否存在,返回布尔值。
动态选择资源URL根据判断结果选择本地未打包文件或打包文件的URL(使用get_template_directory_uri()生成URL):
$file = file_exists($file_path) ? get_template_directory_uri() . '/src/javascript/pages/linksCount.js' : get_template_directory_uri() . '/dist/linksCount.js';注册并加载脚本使用wp_register_script和wp_enqueue_script加载选定的脚本:
wp_register_script('links_count', $file, array(), '1.0', true);wp_enqueue_script('links_count');此方法不仅适用于JavaScript文件,还可用于动态加载CSS、图片或其他资源文件。例如:
// 动态加载CSS$css_path = get_template_directory() . '/assets/css/custom.css';$css_url = file_exists($css_path) ? get_template_directory_uri() . '/assets/css/custom.css' : get_template_directory_uri() . '/assets/css/fallback.css';wp_enqueue_style('custom_css', $css_url);总结通过正确使用get_template_directory()获取绝对路径,并结合file_exists动态选择资源,可解决WordPress中文件存在性判断的问题。此方法提升了代码的灵活性,尤其适用于需要区分开发/生产环境的场景。务必检查路径、权限和缓存,以确保功能稳定运行。