Pensavo di semplificarmi la vita e di essere consapevole del futuro salvando alcuni contenuti come frammenti di JSON nei campi personalizzati post_meta. Sfortunatamente, WordPress non è d'accordo e mi sta rendendo la vita incredibilmente difficile.
Ho una stringa JSON che assomiglia essenzialmente a questa. Questo è solo un bit e la stringa di commento è solo alcune entità unicode fittizie. Il tutto viene generato con il codice json .
{
"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"
}
}
Purtroppo dopo averlo salvato con update_post_meta
, esce così:
{
"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"
}
}
E con le barre tagliate, non può essere json_decode
ripristinato in contenuti utili.
Qualche idea sul perché WordPress potrebbe farlo, e se c'è un modo per evitarlo? Non riesco a usare il flag JSON_UNESCAPED_UNICODE perché si tratta di un'installazione di PHP 5.3.x e ho già provato a codificare htmlentities
prima che il contenuto venga passato json_encode
, ma che cattura solo un piccolo sottoinsieme di entità UTF-8.
Grazie in anticipo!
(EDIT: FWIW, so che potrei semplicemente salvare un array direttamente in post_meta e sarebbe serializzato e accadrà la magia, ma mi piace l'idea di avere i dati archiviati come JSON. Se non esiste una soluzione semplice ed elegante io grotta, ma io sono molto sperando che ci sia un modo facile, soluzione elegante!)