[Resolvido] WordPress com erro ao salvar texto com emojis 😎

Pouco tempo após a migração do blog para outra hospedagem, eu percebi que ao incluir emojis no texto, o WordPress exibia a mensagem abaixo e não salvava o rascunho do texto na base de dados 😱.

Falha ao atualizar. Não foi possível atualizar o post no banco de dados.

Salve este texto em seus favoritos 💚 para que, se um dia você passar por situação parecida, consiga resolver rapidamente o problema.

A razão principal para isso acontecer geralmente está relacionada à configuração do banco de dados do seu WordPress. Emojis utilizam caracteres que vão além do conjunto básico de caracteres suportado por configurações de banco de dados mais antigas (como utf8), então é provável que isso ocorra mesmo que você não use emojis, mas use caracteres estendidos de outros idiomas.

💬 Para que o WordPress consiga armazenar e exibir emojis corretamente, o banco de dados precisa estar configurado para usar o conjunto de caracteres utf8mb4. O “mb4” significa “4-byte”, que é o que permite o armazenamento de uma gama maior de caracteres Unicode, incluindo emojis.

Então vamos ter que mexer na estrutura do nosso banco de dados. Se você se lembrou do backup, parabéns, senão, ainda bem que te lembrei!

**** 💥 !!! BACKUP !!! 💥 ****

Após realizar o backup do banco de dados para evitar problemas, o primeiro passo é corrigir o COLLATE do banco de dados que deve ser “utf8mb4_unicode_ci”.

Alterando o COLLATE do banco de dados do WordPress

As telas e exemplos a seguir foram obtidas em um ambiente de teste quando estava preparando a migração do blog há alguns meses.

Exemplo de bancos de dados do WordPress com COLLATE desconfigurado.

Para corrigir, basta o comando abaixo que pode ser executado diretamente da interface do Adminer, ou de outro gerenciador de banco de dados de sua preferência.

ALTER DATABASE `db-blog` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

Lembre-se de alterar o nome da sua base de dados que neste exemplo é o “db-blog”.

Alterando o CHARSET das tabelas

É curioso mas antes da migração estava tudo certo e funcionando, mas após realizar a migração e restaurar o dump da base original no novo servidor todas as configurações foram bagunçadas. Olhe abaixo:

Charset das tabelas desconfigurados

As tabelas “_posts”, “_comments” e “_terma” são as mais críticas já que são nelas que nossos textos são salvos, então vamos alterá-la com o comando abaixo:

ALTER TABLE `xxxx_posts` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `xxxx_comments` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `xxxx_terms` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Não esqueça de alterar o prefixo “xxxx” dos comandos acima pelo correspondente a sua configuração.

Feito isso, como se pode ver em todo este texto, foi possível adicionar quantos emojis eu quiser sem problemas 🥳🤗 . Mas não se preocupe, eu prometo não exagerar igual desta vez 🤓.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.