2.wordpress网站遇到非法json相应问题

如图:WordPress 发布失败。错误信息:此响应不是合法的JSON响应。

1. 检查 WordPress REST API 是否正常工作​

WordPress 依赖 REST API 进行数据交互(如古腾堡编辑器、AJAX 请求)。输入以下 URL 测试:

https://你的网站域名/wp-json/
  • ​正常情况​​:返回 JSON 格式的数据(类似 {"name":"网站名称","description":"..."})。
  • ​错误情况​​:返回空白、404 或 500 错误。

​解决方法​

  • ​刷新固定链接​​:
    进入 WordPress 后台 → ​​设置 → 固定链接​​ → 直接点击 ​​保存更改​​(无需修改),重新生成 .htaccess 规则。
  • ​检查 .htaccess 文件​​:
    确保文件包含 WordPress 默认规则(如下)
# 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

2. 禁用插件或切换主题​

​插件或主题冲突​​ 是常见原因。按以下步骤排查:

  1. ​禁用所有插件​​:
    进入后台 → ​​插件 → 已安装插件​​ → 全选 → ​​批量操作 → 停用​​。
    然后逐个重新启用,观察哪个插件触发问题。
  2. ​切换默认主题​​:
    暂时启用 ​​Twenty Twenty-Four​​ 等官方主题,测试是否恢复正常

3. 检查服务器 PHP 和 HTTPS 配置​

​(1)PHP 配置问题​

  • ​确保 PHP 版本 ≥ 7.4​​(推荐 8.0+):
    进入服务器终端运行:bash复制
php -v
  • 如果版本过低,升级 PHP(方法因服务器环境而异)。
  • ​调整 PHP 内存限制​​:
    编辑 wp-config.php,添加:
define('WP_MEMORY_LIMIT', '256M');

(2)HTTPS 混合内容问题​

如果网站启用了 HTTPS,但部分资源仍通过 HTTP 加载,会导致 JSON 请求被浏览器拦截。

  • ​强制全站 HTTPS​​:
    在 wp-config.php 中添加:
define('FORCE_SSL_ADMIN', true);
$_SERVER['HTTPS'] = 'on';

​4. 检查 WordPress 核心文件完整性​

手动替换 WordPress 核心文件(不影响数据库和上传的内容):

  1. 下载最新版 WordPress(中文版:cn.wordpress.org)。
  2. 删除服务器上 ​​除以下目录外​​ 的所有文件:
    • /wp-content/
    • /wp-config.php
  3. 上传新版 WordPress 文件到服务器,覆盖旧文件。

5. 调试模式(查看详细错误)​

在 wp-config.php 中启用调试模式:

php复制
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);  // 错误日志保存到 /wp-content/debug.log
define('WP_DEBUG_DISPLAY', false);  // 不直接显示错误

刷新页面后检查 /wp-content/debug.log,定位具体错误。

​6. 数据库修复​

如果数据库表损坏,可能导致 JSON 数据异常。

  1. 使用 ​​WP-DBManager​​ 插件修复优化数据库。
  2. 或手动运行 SQL 命令(备份数据库前):
REPAIR TABLE wp_options;

以上为可能遇到的问题情况和解决方式,通过我自身的建站情况进行排查:

第一种情况:WordPress 编辑器插件的问题

WordPress 网站是刚搭建的,根本没有下载、安装任何的插件(排除

第二种情况:Wordpress WP RestAPI的问题

  如果发表文章的时候通过浏览器的 F12 功能来审查资源,你会发现 WPREST API 会报错,这个时候可以尝试禁用 WPREST API 来测试是否正常工作。

  想要禁用 WPRESTAPI,可以安装下面这个插件来实现。

  WPREST API 插件地址:https://cn.wordpress.org/plugins/disable-wp-rest-api/

  刚好这个服务器也有另一个 WordPress 网站,而且连程序都是从同一个服务器复制粘贴的,所以这个情况不存在(排除)

第三种情况:系统镜像的问题

  有可能是系统镜像里面某个组件和新版本的 WordPress 不兼容导致的,如果是这样的话,就需要直接换个镜像解决的更快一点。

  但是,同一个服务器,两个 wp 网站,一个就是正常的,新搭建的这个却不正常,不应该。(排除)

  推荐:如何修复WordPress错误您的浏览器阻止或不支持Cookies

第四种情况:伪静态的问题

服务器的宝塔面板伪静态规则修改,在宝塔控制面板打开对应的 WordPress 网站,选择设置,然后选择伪静态,选择 WordPress 程序,点击保存即可。(解决问题

现在,WordPress网站又可以正常运行

参考文章:

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注