WordPress短代码对未登录用户不更新页面问题排查
WordPress短代码未登录用户不更新问题排查与解决
一、先排查缓存问题(最常见原因)
WordPress默认对未登录用户启用页面缓存,登录用户会跳过缓存,这大概率是问题根源:
- 临时禁用所有缓存插件(比如WP Rocket、W3 Total Cache等),测试未登录状态下是否能看到随机内容更新
- 若用了CDN服务,暂停CDN缓存验证效果
- 给短代码添加缓存排除逻辑,在函数开头加入代码强制页面不缓存:
function php_hybridiser() { nocache_headers(); // 禁用页面缓存 // 原有代码... }
二、文件权限检测与修复
登录和未登录状态下PHP运行权限可能不同,可在代码中加入权限检查,同时优化代码逻辑:
function php_hybridiser() { // 定义文件路径 $file1 = "/home/aegiswebdesign/htdocs/aegiswebdesign.uk/list_1.txt"; $file2 = "/home/aegiswebdesign/htdocs/aegiswebdesign.uk/list_2.txt"; // 检查文件是否可读 if (!is_readable($file1)) { return "错误:无法读取list_1.txt,请检查文件权限或路径"; } if (!is_readable($file2)) { return "错误:无法读取list_2.txt,请检查文件权限或路径"; } // 读取文件并随机取行,同时去除换行符 $f_contents = file($file1, FILE_IGNORE_NEW_LINES); $item_1 = $f_contents[array_rand($f_contents)]; $f_contents = file($file2, FILE_IGNORE_NEW_LINES); $item_2 = $f_contents[array_rand($f_contents)]; return $item_1 . " " . $item_2; } add_shortcode('hybridiser', 'php_hybridiser');
服务器文件权限建议设置:
- 文本文件权限设为
644(所有者读写,其他用户只读) - 文件所在目录权限设为
755(所有者读写执行,其他用户读执行)
三、排查Code Snippets插件冲突
部分代码片段插件可能缓存代码或与其他插件冲突:
- 临时禁用Code Snippets,将代码直接添加到主题
functions.php中测试 - 检查Code Snippets设置,确认是否有缓存相关选项
四、其他排查手段
- 开启WordPress调试模式:在
wp-config.php中添加以下代码,查看wp-content/debug.log中的报错信息:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); - 用WordPress内置常量
ABSPATH构建文件路径,避免硬编码绝对路径出错:$file1 = ABSPATH . "list_1.txt"; // 假设文件在网站根目录
内容的提问来源于stack exchange,提问作者Ian Rex-Hawkes
相关产品推荐
相关产品推荐

