Eu pensei que estava facilitando minha vida e tendo consciência do futuro, salvando algum conteúdo como bits de JSON nos campos personalizados post_meta. Infelizmente, o WordPress não concorda e está tornando minha vida incrivelmente difícil.
Eu tenho uma string JSON que se parece essencialmente com isso. Isso é apenas um pouco, e a sequência de comentários é apenas algumas entidades unicode fictícias. A coisa toda é gerada com 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"
}
}
Infelizmente, depois que eu o salvo update_post_meta
, ele sai assim:
{
"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 com as barras cortadas, não é possível json_decode
voltar ao conteúdo útil.
Alguma idéia de por que o WordPress pode estar fazendo isso, e se existe uma maneira de evitá-lo? Não posso usar o sinalizador JSON_UNESCAPED_UNICODE porque esta é uma instalação do PHP 5.3.x e já tentei codificar htmlentities
antes da passagem do conteúdo json_encode
, mas que captura apenas um pequeno subconjunto de entidades UTF-8.
Desde já, obrigado!
(EDIT: FWIW, eu sei que eu poderia salvar uma matriz diretamente no post_meta e seria serializada e a mágica aconteceria, mas eu apenas gosto da ideia de ter os dados armazenados como JSON. Se não houver uma solução fácil e elegante vou caverna, mas eu estou muito esperando lá é uma solução fácil, elegante!)