这个主题有点问题!
前面刚用一个开源主题建立了网站,今天写文章就发现保存不了。这里记录一下解决过程,毫无疑问,AI占大头,我只是它小老弟😂,这里有个小技巧,让AI排查问题时,最好是提示它一步一步排查,不然它会一股脑输出所有可能存在的问题,信息太多接受不了。
问题初现
事情是这样的:新建的WordPress网站突然无法保存草稿了,每次点击"保存草稿"按钮,页面就提示更新失败;浏览器控制台还报出一堆CSS文件404和500的错误,像这样:
忘记截图了,大概就这么些报错:
/index.php?rest_route=%2Fwp%2Fv2%2Fposts%2F61&_locale=user:1 Failed to load resource: the server responded with a status of 500 ()
GET /wp-includes/css/dist/block-library/editor.min.css?ver=6.8.2 404
GET /wp-includes/css/classic-themes.min.css?ver=6.8.2 404
查了文件夹和文件泉下也没问题。
第一步:查看错误日志
我直接把Nginx错误日志甩给AI,发现了关键线索:
PHP Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function "_return_false" not found or invalid function name
看到这个错误,我很懵逼。qwen告诉我:WordPress有个内置函数叫__return_false
(注意是两个下划线),但这里却在找_return_false
(只有一个下划线)!这就是典型的拼写错误。
第二步:确认问题范围
我们做了个简单测试:禁用所有插件(wp网站后台或网站目录改插件目录名称都可以)。但问题依然存在!这说明问题不在插件上。
接着我们更换了主题,嘿,保存草稿功能恢复正常了!这就基本确定问题出在原主题上。
第三步:深入排查主题问题
最后我在整个主题目录搜索:
grep -r "_return_false" /www/wwwroot/actorus/wp-content/themes/your-theme/
最终,确实找到了这个,改完,保存,确实可以了,不过这个主题人家没维护了,也没办法。

第四步:解决CSS 404问题
虽然保存草稿功能恢复了,但CSS文件404的问题还在。我们开始排查:
- 确认文件存在 ✅
- 检查文件权限(644)✅
- 查看Nginx配置
在Nginx配置中,我们发现了问题所在:
#SECURITY-START 防盗链配置
location ~ .*\.(jpg|jpeg|gif|png|js|css)$
{
expires 30d;
access_log /dev/null;
valid_referers www.actorus.top actorus.top;
if ($invalid_referer){
return 404;
}
}
#SECURITY-END
这段配置本意是防盗链,但它太严格了!WordPress编辑器(在/wp-admin/post-new.php
)尝试加载CSS文件时,Nginx认为这是"无效引用",直接返回404。
第五步:修复Nginx配置
我们尝试修改配置,但第一次改错了,导致Nginx配置测试失败:
conflicting parameter "www.actorus.top" in /www/server/nginx/conf/nginx.conf:102
Nginx不接受*.actorus.top
这样的写法。最后,我直接按照如下改写:
valid_referers none blocked server_names;
这个配置让Nginx自动识别server_name
中定义的所有域名(我定义的是www.actorus.top
和actorus.top
),既解决了语法错误,又能正确允许来自自己网站的引用。
总结经验
- 保存草稿失败:很可能是主题中错误使用了
_return_false
(单下划线)而不是__return_false
(双下划线),当然具体情况具体分析!- 解决方法:在整个主题目录搜索
_return_false
并修正
- 解决方法:在整个主题目录搜索
- CSS文件404:可能是Nginx防盗链配置太严格
- 解决方法:修改
valid_referers
为none blocked server_names
- 解决方法:修改
小贴士
- 主题开发注意事项:记住WordPress核心函数中,
__return_false
和__return_true
都有两个下划线!少一个下划线就会出大问题。 - Nginx配置技巧:防盗链配置要谨慎,特别是对WordPress后台功能有影响。如果不确定,可以先注释掉相关配置测试。
- 排查顺序:遇到问题先看错误日志,然后按"插件→主题→服务器配置"的顺序排查,效率最高。