此响应不是合法的JSON响应,说实话我很少见,因为我大多数客户都是选择直接使用国外的虚拟主机建站,通常不会出现这个问题。它主要出现在购买国内各大服务商云空间自己搭建宝塔的情况下。
这个报错会在我们想要发布页面或文章时出现。下面我们来看看几个可能出现 “发布失败。-此响应不是合法的 JSON 响应” 的解决方法。
1. 宝塔设置伪静态
如果你是用宝塔搭建WordPress的话,那么出现不是合法的 JSON 响应 99% 的可能就是因为你没有设置伪静态。
操作很简单,去到宝塔界面,找到出现问题的网站点设置,找到伪静态在上面的下拉单里找到wordpress保存即可,现在你大概率发布页面文章是没有问题的了。
我把WordPress伪静态代码放这了,你要是需要手动操作的话复制下就行。
location /
{
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
如果这个方法对你没有或者你不是用宝塔搭建网站的,那么解决方法可能在下面几种里。
2. 关闭自带的古腾堡编辑器
这个问题出现的原因是因为古腾堡(Gutenberg)要用到 WordPress 的 API REST,可是服务器屏蔽了它。居然这样,那么方法之一就是关闭古腾堡编辑器,当然前提你不打算用它。
//禁用古腾堡编辑器
add_filter('use_block_editor_for_post', '__return_false');
remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );
把这个代码通过 Code Snippets 代码插件插入或者直接放在你主题编辑器里面的 function.php 上。
3. 关闭 WordPress API REST
另外一条路就是关闭 API REST,这个可以直接通过插件像这个。如果你有装安全插件其实大多数都是有自带这个功能的,你可以找找。又或者你安装了优化插件,它们也有带的。
像 Admin and Site Enhancements,它就自带关闭古腾堡和关闭 REST API 功能。
4. 禁用全部插件
WordPress出现的问题一半以上都是插件的问题,所以你可以试试全部禁用看看有没有解决,如果是这样的话,再一个个开起来,看看是哪个的问题。
5. 更新网站固定链接
去到后台设置 > 固定链接 > 不需要做任何操作,直接点保存更新。
为什么要这么做?因为WordPress的链接创建取决于服务器的 rewrite,有时候需要保存更新一下来“提醒”它,保存更改后,在服务器上会创建一个“干净”的 .htaccess 文件。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
一个干净的 .htaccess 是上面这个样子。
6. Cloudflare SSL 完全模式
如果你在用 Cloudflare 的内容分发网络提高网站速度的话,那么你可能得看看 SSL 加密模式是不是完全的。