Limpeza automática de caracteres acentuados nos uploads do WordPress

Caracteres acentuados em nomes de arquivos enviados para o WordPress podem representar problemas. Felizmente, este problema é fácil de resolver.

Este post foi atualizado pela última vez há mais de 3 meses.

Limpeza automática de caracteres acentuados nos uploads do WordPress. Não é novidade para os clientes da PortoFácil que não devem utilizar caracteres acentuados em nomes de arquivos enviados para o WordPress.

Neste artigo vamos revisitar o assunto, explicando por que esta prática deve ser evitada. Bem como oferecer ao problema uma solução automatizada do tipo “configure e esqueça”.

Limpeza automática de caracteres acentuados nos uploads do WordPress

Por que não utilizar caracteres acentuados em arquivos enviados para o WP

Existem três problemas potenciais orbitando o uso de caracteres especiais em uploads do WordPress. Todos parecem de menor importância, mas quando acontecem com nossos blogs os efeitos são, digamos, perturbadores.

Embora os sistemas de arquivo tenham evoluído tremendamente nos últimos anos, a essência destes ainda é a mesma de 30 ou 40 anos atrás. E isso muito dificilmente vai mudar.

Atualmente é possível não só utilizar caracteres acentuados em nomes de arquivos, como também “figurinhas” engraçadinhas (os Emojis). Porém, estas “modernidades” não são suficientemente padronizadas. E, consequentemente, acabam gerando conflitos com o conjunto de caracteres ASCII.

Para o contexto deste artigo (uploads no WordPress) os caracteres válidos para nomes de arquivos são as letras minúsculas de “a” a “z”, os numerais de “0” a “9”, o traço “-” (ou sinal de subtração) e o sublinhado “_”.

Falta de confiabilidade no backup

O primeiro problema potencial sobre os caracteres acentuados diz respeito aos backups, ou seja, às cópias de segurança dos sites.

Embora façamos todo o possível para garantir máxima compatibilidade entre os sistemas de arquivos dos servidores web e dos servidores de armazenamento, pode haver casos em que os caracteres acentuados impeçam os arquivos de serem salvos corretamente.

E este é um problema dificílimo de detectar! Pois normalmente só aparece quando acontece a necessidade de uma restauração e os arquivos não existem.

Falta de confiabilidade nos processos de migração

Migrações de sites são, em última análise, um processo completo de backup no servidor de origem e restauração na máquina de destino.

A lógica que implica que o backup perca confiabilidade no caso das cópias de segurança é exatamente a mesma. Ou seja, implica que os processos de migração estejam sob o risco de não serem completamente finalizados. E os caracteres acentuados podem ser um grande vilão!

Quebra de integridade da biblioteca de mídia

O terceiro problema potencial implicado pelo uso de caracteres especiais nos nomes de arquivos do WordPress diz respeito a casos um pouco mais específicos. Por exemplo, blogs muito grandes (e geralmente muito antigos) que precisam “descarregar” sua biblioteca de mídia para serviços externos.

Como se tratam de sistemas normalmente muito diferentes, potencializa-se qualquer possível inconsistência entre os conjuntos de caracteres de cada servidor.

Como resolver automaticamente o problema dos caracteres acentuados e especiais nos uploads

Felizmente, é bastante simples de se resolver o problema dos caracteres especiais no WordPress. Seja:

  • usando plugins convencionais, um hack no functions.php;
  • ou um Must Use Plugin, um tipo de plugin especial, que não pode ser desativado a não ser pela exclusão do arquivo de código.

Contudo, não faremos nenhuma sugestão de plugin para obter este intento, pois a maioria deles são desnecessariamente complexos.

Para fazer com que seu WordPress remova automaticamente qualquer caractere especial, bem como converta automaticamente os nomes de arquivos para minúsculas, basta usar o código abaixo — que deve ser adicionado no functions.php do template ou num arquivo no diretório /wp-content/mu-plugins (o que você se sentir mais confortável — e certifique-se de saber o que está fazendo, para não causar problemas e erros em seu site.

<?php
function sanitize_filename_on_upload($filename) {
  $today = date("Ymd");
  $ext = explode('.', $filename);
  $ext = end($ext);
  $sanitized = preg_replace('/[^a-zA-Z0-9-_.]/','', substr($filename, 0, -(strlen($ext)+1)));
  $sanitized = str_replace('.','-', $sanitized);
  return $today . '-' . strtolower($sanitized.'.'.$ext);
}
add_filter('sanitize_file_name', 'sanitize_filename_on_upload', 10);Code language: PHP (php)

Naturalmente, clientes da PortoFácil não precisam aventurar-se sozinhos nesta personalização. Ou seja, basta entrar em contato com nosso suporte, e será um prazer instalar o código acima da maneira correta em todos os seus sites e blogs.

Quero ser cliente da PortoFácil! Entre em contato

Leia também

Textos que têm a ver com este assunto:
TUTORIAL: como resolver erros e problemas no WordPress

Tutorial de como resolver os principais erros e problemas relacionados ao WordPress. Confira nosso passo a passo detalhado de soluções!

Novidades do WordPress 6.7.1

Conheça todas as novidades do WordPress, incluindo melhorias e aprimoramentos em segurança, desempenho e acessibilidade.

Como migrar site de qualquer plataforma para WordPress

Tutorial completo de como migrar site de qualquer plataforma (Drupal, Wix, Tumblr, Blogger, Blogspot, Joomla e Magento) para o WordPress.