我以为可以通过将一些内容另存为JSON位以保存在自定义post_meta字段中,从而使自己的生活变得轻松,并着眼于未来。不幸的是,WordPress并不同意,这使我的生活变得异常艰难。
我有一个基本上像这样的JSON字符串。这只是一位,注释字符串只是一些伪unicode实体。整个事情是使用json_encode生成的。
{
"0": {
"name": "Chris",
"url": "testdomain.com",
"comment": "\u00a5 \u00b7 \u00a3 \u00b7 \u20ac \u00b7 \u00b7 \u00a2 \u00b7 \u20a1 \u00b7 \u20a2 \u00b7 \u20a3 \u00b7 \u20a4 \u00b7 \u20a5 \u00b7 \u20a6 \u00b7 \u20a7 \u00b7 \u20a8 \u00b7 \u20a9 \u00b7 \u20aa \u00b7 \u20ab \u00b7 \u20ad \u00b7 \u20ae \u00b7 \u20af \u00b7 \u20b9"
}
}
不幸的是,在用保存后update_post_meta
,它看起来像这样:
{
"0": {
"name": "Chris",
"url": "testdomain.com",
"comment": "u00a5 u00b7 u00a3 u00b7 u20ac u00b7 u00b7 u00a2 u00b7 u20a1 u00b7 u20a2 u00b7 u20a3 u00b7 u20a4 u00b7 u20a5 u00b7 u20a6 u00b7 u20a7 u00b7 u20a8 u00b7 u20a9 u00b7 u20aa u00b7 u20ab u00b7 u20ad u00b7 u20ae u00b7 u20af u00b7 u20b9"
}
}
加上斜线后,就不能再将其json_decode
转换为有用的内容了。
关于WordPress为什么会这样做的任何想法,以及是否有避免的方法?我不能使用JSON_UNESCAPED_UNICODE标志,因为这是PHP 5.3.x安装,并且htmlentities
在内容传递给之前我已经尝试使用进行编码json_encode
,但这仅捕获了UTF-8实体的一小部分。
提前致谢!
(编辑:FWIW,我知道我可以将一个数组直接保存到post_meta中,它将被序列化,并且会发生魔术,但是我只是喜欢将数据存储为JSON的想法。如果没有一种简单,优雅的解决方案我会的洞穴,但我非常希望有是一个简单的,优雅的解决方案!)