Procure pela linha 120 do arquivo /wp-admin/upload.php 😉
Olá,
Aqui neste link há uma função que parece fazer isso no momento do envio, só adicionar o nome do site na frente com get_bloginfo.
Adicionar no functions.php (ou criar um plugin):
function make_filename_hash($filename) {
$nomedosite = get_bloginfo('name');
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
return $nomedosite.'_'.md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);
Então ao enviar um arquivo ele ficou como SiteTeste_c983077ca27977bb5cb4b6398f144166.png
Nota: isso vai funcionar para todos os arquivos, se quiser só para imagens dai precisa adicionar outras funções a este código.
Diana, encontrei um problema com esse código, ele funciona e tudo, porém retorna o nome do Site assim – Nome do Web Site – Descrição do Site.(md5).jpg
nesse caso, vou ter que criar um registro no banco de dados?
Galera, consegui apenas troquei os seguintes valores:
Ex:
$nomedosite = “portal_pioix”;
não tem como diminuir o número de caracteres?
OI,
Você pode usar outro tipo de gerador de caracteres aleatórios, nesta função se está usando a função md5 que gera um hash de 32 caracteres.
(Há exemplos neste doc de como criar um hash de 22 caracteres por exemplo)
Aqui está a minha contribuição.
Alterei um pouco a função para só corrigir o nome, sem adicionar hash e usar o nome do arquivo e não o nome do site.
Então o nome do arquivo será o mesmo, só que sem acentos, espaços em branco serão trocados por – e caracteres estranhos serão removidos.
Basicamente o nome do arquivo será como sua slug.
Exemplo:
Um arquivo com nome assim “Wallpaper Água viva [Imagem ~ ]-001.jpg”
Será transformado em “wallpaper-agua-viva-imagem-001.jpg”
function sanitize_file_name_in_upload($filename) {
$info = pathinfo($filename);
$extension = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $extension);
return strtolower(sanitize_title($name)).$extension;
}
add_filter('sanitize_file_name', 'sanitize_file_name_in_upload', 10);
Obrigado Diana pela dica.
Myst1010
Tem como mudar a função para renomear para o nome da postagem. Ex:
nome-da-postagem-c983077ca27977bb5cb4b6398f144166.png
tem como ?
Tentei aqui algumas vezes e não parece ter como.
Para pegar o nome da postagem achei que poderíamos usar a função get_the_title() no lugar da get_bloginfo(), mas para isso precisaríamos pegar o ID do post e parece que ele não está disponível, mesmo usando global $post
Se alguém descobrir como pegar o ID do post é só trocar
get_bloginfo() por get_the_title() passando o ID do post na primeira função postada pela Diana.