¿Cambiar el nombre de la imagen durante la carga usando la marca de fecha y hora?

2

Estoy tratando de cambiar el nombre de las imágenes durante la carga para evitar problemas con los nombres de los archivos de imagen que contienen caracteres especiales y nombres de archivo con caracteres no latinos.

Encontré esta función en renombrar imágenes en WordPress :

function sanitize_file_uploads( $file ){
    $file['name'] = sanitize_file_name($file['name']);
    $file['name'] = preg_replace("/[^a-zA-Z0-9\_\-\.]/", "", $file['name']);
    $file['name'] = strtolower($file['name']);
    add_filter('sanitize_file_name', 'remove_accents');

    return $file;
}
add_filter('wp_handle_upload_prefilter', 'sanitize_file_uploads');

Eliminará los caracteres especiales no aceptados, convertirá el nombre a minúsculas y eliminará los acentos. Pero, por ejemplo, si la imagen solo tiene caracteres no latinos, creará un nombre de archivo de imagen como este: jpg-width-heigh.jpg (ancho y alto son dimensiones de la imagen).

Me gustaría tener un nombre de archivo de imagen basado en la fecha y hora actual, como: año-mes-día-hora-minuto-segundo.jpg

Sé que hay un conector que puede hacer ese cambio de nombre del archivo en la carga , pero no deseo usar el plugin solo para eso.

¿Alguien tiene solución, idea?

    
pregunta Advanced SEO 14.08.2016 - 10:20

1 respuesta

4

Podrías, por ejemplo, verifique el nombre de archivo y la extensión en pathinfo , después de su saneamiento personalizado.

Ejemplo :

Si el nombre de archivo está vacío y extensión no está vacío, agregue la hora actual formateada como parte del nombre de archivo:

$info = pathinfo( $file['name'] );
if( empty( $info['filename'] ) && ! empty( $info['extension'] ) )
    $file['name'] = sprintf( '%s.%s', current_time( 'Y-m-d-H-i-s' ), $info['extension'] );

Si el archivo áéíú.png se elimina a .png con su saneamiento personalizado, entonces se le cambiará el nombre a 2016-08-14-10-54-07.png

Tenga en cuenta que si importa otro archivo de este tipo en el mismo segundo, entonces wp_unique_filename() agregará -1 a la parte del nombre del archivo, por lo que se le cambiará el nombre a 2016-08-14-10-54-07-1.png . El tercer archivo obtendría -2 agregado y así sucesivamente.

Espero que puedas ajustar esto más a tus necesidades.

    
respondido por el birgire 14.08.2016 - 20:15

Lea otras preguntas en las etiquetas