• Resolvido patrickacioli

    (@patrickacioli)


    Bom galera, este é o meu primeiro tópico em pedido de ajuda, tentarei ser objetivo e rápido.

    Gostaria de saber como que posso determinar no meu BD os nomes das images que serão upadas no post, exemplo:

    1) Quando faço o upload, o nome dica ex: DSC9800.jpg, beleza, não quero que fique assim, e não quero ficar mudando manualmente toda as vezes.

    2) Queria que ficasse assim, nomedosite-9e107d9d372bb6826bd81d3542a419d6.jpg

    No caso Nome do site + algoritmo que o próprio wp gera, sem que eu precise mudar nada…

    Agradeço desde já !

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • 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.

    Criador do tópico patrickacioli

    (@patrickacioli)

    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?

    Criador do tópico patrickacioli

    (@patrickacioli)

    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.

    Criador do tópico patrickacioli

    (@patrickacioli)

    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.

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • O tópico ‘Mudar nome de imagem após Upload’ está fechado para novas respostas.