从PHP 5.2.0(2006)起,默认情况下,PHP本地JSON扩展已与PHP捆绑和编译。但是,还是有很多PHP安装不包括 JSON 。为了确保在所有受支持的PHP版本中都能获得与JSON相关的功能的一致体验,WordPress 核心汇总一直包括大量的变通方法、函数和polyfill。
在2011年(WordPress 3.2)中,WordPress官方 尝试删除与JSON相关的兼容性代码。但是,发现默认情况下仍有相当数量的PHP发行版仍缺少JSON扩展,然后只能恢复了删除的代码以确保兼容性。
在WordPress 5.2中,支持的PHP最低版本从5.2.6提高到5.6.20。自从上一次尝试鼓励使用PHP本机JSON扩展以来的8年中,禁用此扩展的发行版数量已大大减少。
因此,要运行WordPress 5.3及更高版本,必须要安装PHP的JSON扩展。
为防止兼容性问题,未启用PHP本地JSON扩展的站点在尝试升级到WordPress 5.3时将看到错误消息。该更新将被取消,并且该站点将保留在当前版本上(请参阅[46455])。这是为了防止运行自定义PHP配置的服务器上的潜在兼容性问题。
以下是更改的摘要。
不推荐使用
以下函数和类将保留在代码库中,但在使用时将触发不建议使用的警告(请参阅[46205]):
Services_JSON
和Services_JSON_Error
类和所有方法wp-includes/class-json.php
文件_wp_json_prepare_data()
(私有)函数
已移除
以下函数和类已从代码库中完全删除(请参见[46208]更改集):
json_encode()
函数json_decode()
函数_json_decode_object_helper()
函数json_last_error_msg()
函数JsonSerializable
界面$wp_json
全局变量JSON_PRETTY_PRINT
常量JSON_ERROR_NONE
常量
不变的
wp_json_encode()
函数将保留,目前不打算弃用。此函数包括对JSON编码数据的额外完整性检查,并且仍作为将数据编码为JSON的首选方式。