Ich dachte, ich würde mir das Leben leichter machen und zukunftsbewusst sein, indem ich einige Inhalte als JSON-Teile in benutzerdefinierten post_meta-Feldern speichere. Leider stimmt WordPress nicht zu und macht mein Leben unglaublich schwierig.
Ich habe eine JSON-Zeichenfolge, die im Wesentlichen so aussieht. Dies ist nur ein Bit, und die Kommentarzeichenfolge besteht nur aus einigen Dummy-Unicode-Entitäten. Das Ganze wird mit json_encode generiert .
{
"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"
}
}
Nachdem ich es mit update_post_meta
gespeichert habe, sieht es leider so aus:
{
"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"
}
}
Und wenn die Schrägstriche entfernt sind, kann es nicht json_decode
wieder in nützliche Inhalte umgewandelt werden.
Irgendwelche Ideen, warum WordPress dies tun könnte und ob es einen Weg gibt, dies zu vermeiden? Ich kann das JSON_UNESCAPED_UNICODE-Flag nicht verwenden, da dies eine PHP 5.3.x-Installation ist und ich bereits versucht habe, mit zu codieren, htmlentities
bevor der Inhalt an übergeben wird json_encode
, aber dies erfasst nur eine kleine Teilmenge von UTF-8-Entitäten.
Danke im Voraus!
(EDIT: FWIW, ich weiß, ich könnte ein Array einfach direkt in post_meta speichern und es würde serialisiert und Magie würde passieren, aber ich mag nur die Idee, die Daten als JSON zu speichern. Wenn es keine einfache, elegante Lösung gibt ich werde Höhle, aber ich bin sehr viel Hoffnung , es ist eine einfache, elegante Lösung!)