Renomeie os arquivos no upload

4

Eu tenho tentado renomear minhas imagens no upload e apenas um pedaço de código que encontrei foi o que usa um hash de 32 caracteres.

function make_filename_hash($filename) {
   $info = pathinfo($filename);
   $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
   $name = basename($filename, $ext);
   return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);

Meu conhecimento de php é muito limitado e procurei em todos os lugares por um exemplo que usa algum número aleatório sendo gerado em vez de um hash, sem sucesso. Minha idéia inicial era obter o id da imagem do banco de dados e usá-lo como nome de arquivo de imagem no upload, mas eu tive meu cérebro distorcido no processo.

De qualquer forma, neste momento, eu me contentaria com algum tipo de sistema de numeração que aumentaria em um dígito em cada upload ou se isso não for possivel, pelo menos, um número aleatório usando um intervalo, como rand (10000,99999). / p>

Qualquer ajuda seria muito apreciada muito obrigado

=============================================== ===========

Você pode ler dados de uma tabela personalizada em functions.php e gravar nela. Eu estou tentando ler um contador de uma tabela definir a imagem para esse número de contador e atualizar o contador no banco de dados. Não parece funcionar, o contador aumenta, mas a tabela nunca é atualizada, e não importa qual seja o valor do banco de dados, o contador não usa esse valor, então isso significa que ele também não está lendo esse valor. Eu só quero saber se há outra maneira de fazer isso para renomear arquivos, mas com um valor da minha tabela personalizada. Isso é o que eu tenho até agora. Eu estava pensando que talvez eu use o gancho errado, mas neste momento estou um pouco preso. Obrigado pessoal.

 function make_filename_counter($filename) {      
   $qry;
   $fcnt = 0;
   $sql = ("SELECT counter FROM bwbps_filenamecounter WHERE id = 1");
   $cnt = mysql_query($sql);
   foreach($cnt as $cnt) {
      $fcnt = $cnt->counter;
   }
   $fcnt = $fcnt + 1;
   $info = pathinfo($filename);
   $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
   $sql = "UPDATE bwbps_filenamecounter SET counter = " . $fcnt . " WHERE id = 1";
   $qry = mysql_query($sql);
   $fcnt = 0;
  return $fcnt . $ext;
}
add_filter('sanitize_file_name', 'make_filename_counter', 10); 
    
por sky67ro 20.07.2012 / 21:49

3 respostas

3

não há necessidade de usar uma tabela personalizada, use uma opção e o add_attachment hook:

function wpa59168_rename_attachment( $post_ID ) {

    $post = get_post( $post_ID );
    $file = get_attached_file( $post_ID );
    $path = pathinfo( $file );

    $count = get_option( 'wpa59168_counter', 1 );

    // change to $new_name = $count; if you want just the count as filename
    $new_name = $path['filename'] . '_' . $count;
    $new_file = $path['dirname'] . '/' . $new_name . '.' . $path['extension'];
    rename( $file, $new_file );    
    update_attached_file( $post_ID, $new_file );

    update_option( 'wpa59168_counter', $count + 1 );

}
add_action( 'add_attachment', 'wpa59168_rename_attachment' );
    
por Milo 22.07.2012 / 04:45
0

Se você os estiver fazendo em ordem numérica, basta armazená-los em uma opção e apenas aumentar essa opção toda vez que você adiciona um arquivo.

    
por fdsa 22.07.2012 / 04:30
0

Você pode verificar o código do " Nomes de arquivo para o latin " plugin .

Converte símbolos de diferentes idiomas para letras latinas durante o upload.

O código-fonte do plug-in .

    
por webvitaly 26.07.2012 / 23:16

Tags