一部のコンテンツをJSONのビットとしてカスタムpost_metaフィールドに保存することで、自分の人生を簡単にし、将来を意識するようになったと思いました。残念ながら、WordPressはこれに同意せず、私の人生を信じられないほど難しくしています。
基本的にこのようなJSON文字列があります。これはほんの1ビットであり、コメント文字列は単なるダミーの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がこれを行う理由、およびそれを回避する方法がある場合 これはPHP 5.3.xのインストールなので、JSON_UNESCAPED_UNICODEフラグを使用できません。htmlentities
コンテンツが渡される前に、json_encode
、これはUTF-8エンティティの小さなサブセットしかキャプチャしません。
前もって感謝します!
(編集:FWIW、配列をpost_metaに直接保存するだけでシリアル化されてマジックが発生することはわかっていますが、データをJSONとして保存するというアイデアが気に入っています。簡単でエレガントなソリューションがない場合洞窟探検しますが、簡単でエレガントな解決策があることを期待しています!)