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.

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”.

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 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 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, portanto, que implica que os processos de migração estejam sob o risco de não serem completamente finalizados.

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: 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 especiais nos uploads

Felizmente, é bastante simples de se resolver o problema dos caracteres especiais no WordPress, 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).

Não faremos nenhuma sugestão de plugin para obter este intento, pois a maioria deles são desnecessariamente complexos e a maioria não tem compatibilidade com o WordPress 5.

Para fazer com que seu WP 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 tema 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 blog).

<?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);

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

 

Quero ser cliente da PortoFácil!Contato

Avalie este conteúdo!

Avaliação média: 4.97
Total de Votos: 35
Limpeza automática de caracteres acentuados nos uploads do WordPress

Compartilhe

Publicado por Janio Sarmento – 08 de janeiro de 2019