從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的首選方式。