众所周知,WordPress是一个老牌的博客。由于种种原因,我不再使用Hexo而选择了WordPress,而在配置WordPress的时候我遇到了亿些问题,在这里展示下我这艰难的一下午。
本文含有部分AI生成内容,如果你拒绝AI请不要观看
Sakurairo
(配置失败也有可能是本人技术问题,本文不是对于任何内容的批判,只是写个人踩坑)
我最开始选择了Sakurairo主题,然而出现了两个比较严重的问题:
- 配置无法保存
- 无法新建文章
配置无法保存
每一次保存配置的时候都是提示:
function(){return o&&u(n,o),(s.migrateIsPatchEnabled(n)?r:a||s.noop).apply(this,arguments)}
并且配置处于正在保存状态,无法变更。重新加载后发现并没有保存。F12网络选项卡查看发现该请求为502错误。最终不知道设置了什么,解决了该问题,证实了非主题问题,但遗憾的是我忘记了到底修改了什么。
无法新建文章
新建文章直接报错:
Notice: 函数 map_meta_cap 的调用方法不正确。 在检查 edit_post 权限时,您必须始终依据指定的文章进行检查。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 6.1.0 版本添加的。) in /home/xxx/wp-includes/functions.php on line 6121
这个一直没有解决,我不知道究竟是因为什么,但最终我没能修复这个问题。
Mashiro
这里补充下,我想到换主题的原因是因为切换到默认主题就没有新建文章的问题了
出现的问题:
- 文章404
- 图片无法加载
- API缺少必要permission_callback参数
我们先说第三个问题:
API缺少必要permission_callback参数
根据WordPress的debug.log,我找到了如下错误:
[08-Aug-2025 08:05:53 UTC] PHP Notice: 函数 register_rest_route 的调用方法不正确。 sakura/v1/image/upload REST API 的路由定义缺少必要的 permission_callback 参数。对于打算公开的 REST API 路由,请使用 __return_true 作为权限回调。 请查阅https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/来获取更多信息。 (这个消息是在 5.5.0 版本添加的。) in /home/xxx/wp-includes/functions.php on line 6121
自WordPress 5.5.0起,register_rest_route函数要求为每个REST API路由定义一个permission_callback参数,以控制访问权限。如果路由是公开的,必须明确设置permission_callback为__return_true。如果未定义此参数,WordPress会抛出这些PHP Notice。
在Grok的帮助下,我在/inc/api.php中找到了对应代码,并进行了修复,修改完的代码我放在api.php | Yearnstudio资源站了,各位可以参考。
图片无法加载
(这里指访客图片无法加载,在编辑器里是正常的)
F12可以看到博客试图从http加载图片,好了知道了mixed-content。先把Cloudflare调整为严格(注意不是Full),然后再调整WordPress的站点链接,全部改成https即可
注意,如果Cloudflare为灵活模式,并且此时调整WordPress的设置为https,会造成反复的重定向。这应该是因为Cloudflare在访问源服务器的时候使用http,导致我们的https请求被误认为是http,尝试跳转至https,然后又一次触发这样的错误,导致死循环最终重定向次数太多。
如果你真的手欠改了,那你可以跟着下面的步骤来修复这个问题:
如何修复重定向次数过多
原理:手动修改数据库
访问你的数据库(用你的方法),找到{wp前缀}options这个表,里头有siteurl这个,改成http开头即可规避重定向问题(顺带一提,另一个不用改也可以)
当然,更简单的方法是去修改Cloudflare的模式为严格
文章404
目前没有找到原因,但是知道什么情况下会触发。文章链接里包含汉字则会导致404,即可以通过手动修改文章链接为英文来规避此问题,虽然稍微麻烦,但是能完全规避这个问题。如果你知道为什么,可以告诉我,我会不胜感激。(手动改还挺麻烦的)
Comments | NOTHING