Saya pikir saya membuat hidup saya mudah dan sadar akan masa depan dengan menyimpan beberapa konten sebagai bit JSON di bidang post_meta khusus. Sayangnya, WordPress tidak setuju dan membuat hidup saya sangat sulit.
Saya memiliki string JSON yang pada dasarnya terlihat seperti ini. Ini hanya satu bit, dan string komentar hanyalah beberapa entitas unicode dummy. Semuanya dibuat w / 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"
}
}
Sayangnya setelah saya simpan update_post_meta
, hasilnya tampak seperti ini:
{
"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"
}
}
Dan dengan garis miring dilepaskan, itu tidak dapat json_decode
d kembali ke konten yang bermanfaat.
Adakah ide mengapa WordPress mungkin melakukan ini, dan jika ada cara untuk menghindarinya? Saya tidak dapat menggunakan flag JSON_UNESCAPED_UNICODE karena ini adalah pemasangan PHP 5.3.x, dan saya sudah mencoba melakukan enkode htmlentities
sebelum konten diteruskan json_encode
, tetapi itu hanya menangkap sebagian kecil entitas UTF-8.
Terima kasih sebelumnya!
(EDIT: FWIW, saya tahu saya bisa menyimpan array langsung ke post_meta dan itu akan diserialkan dan sihir akan terjadi tetapi saya hanya suka gagasan memiliki data yang disimpan sebagai JSON. Jika tidak ada solusi yang mudah dan elegan aku akan gua, tapi aku sangat berharap ada adalah solusi yang mudah, elegan!)