Je pensais que je rendais ma vie plus facile et que j'étais tourné vers l'avenir en enregistrant du contenu sous forme de morceaux de JSON dans des champs post_meta personnalisés. Malheureusement, WordPress n'est pas d'accord et rend ma vie incroyablement difficile.
J'ai une chaîne JSON qui ressemble essentiellement à ceci. Ce n'est qu'un bit, et la chaîne de commentaire n'est que quelques entités unicode factices. Le tout est généré avec 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"
}
}
Malheureusement, après l'avoir enregistré avec update_post_meta
, il apparaît comme ceci:
{
"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"
}
}
Et avec les barres obliques supprimées, il ne peut pas être json_decode
remis en contenu utile.
Des idées pourquoi WordPress pourrait faire cela, et s'il existe un moyen de l'éviter? Je ne peux pas utiliser l'indicateur JSON_UNESCAPED_UNICODE car il s'agit d'une installation PHP 5.3.x, et j'ai déjà essayé de coder avec htmlentities
avant de transmettre le contenu json_encode
, mais cela ne capture qu'un petit sous-ensemble d'entités UTF-8.
Merci d'avance!
(EDIT: FWIW, je sais que je pourrais simplement enregistrer un tableau directement dans post_meta et il serait sérialisé et la magie se produirait mais j'aime juste l'idée d'avoir les données stockées en JSON. S'il n'y a pas de solution simple et élégante Je vais céder, mais j'espère vraiment qu'il existe une solution simple et élégante!)