Pregunta sobre Arreglando WordPress de Wordpress:

Deshabilite los espacios de reemplazo para guiones al cargar un archivo

Un usuario preguntó 👇

¿Hay alguna forma de deshabilitar los espacios de guiones en WordPress al cargar un archivo? Tengo un sitio web con archivos mp3, por ejemplo, tengo un archivo:

"Author - Track Title (Original Mix).mp3"

y después de cargarlo cambia a

"Author-Track-Title-(Original-Mix).mp3"

Sé que es por razones de seguridad, pero en otros sitios web donde descargas un archivo, se puede descargar con un nombre de archivo normal sin DASHES. ¿Como arreglarlo?

(@danieltj)

Hace 3 años, 4 meses

El nombre del archivo parece estar cambiando a file.php en esta línea aquí

$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );

Por lo tanto, al cargarlo, deberá cambiar el nombre del archivo antes de que llegue a esa línea de código o si no inserta los guiones automáticamente. Marque este enlace de filtro para cambiar el nombre del archivo antes de ir al filtro de nombre.

wp_handle_upload_prefilter Debería ser lo que buscas. Otra opción es cambiar el nombre del archivo antes de cargarlo, pero agregar un gancho para hacerlo automáticamente asegurará que los usuarios tampoco carguen techos. Cualquiera que sea más eficaz.

Esta respuesta fue modificada hace 3 años, 4 meses por. Razón: problema de código de bloque fijo

(@jakept)

Hace 3 años, 4 meses

Concretamente un cambio de espacios que se estrella en el sanitize_file_name() función, utilizado en interiores wp_unique_filename().

sanitize_file_name() incluye un filtro, sanitize_file_name_chars, que le permite cambiar los caracteres especiales extraídos de los nombres de archivo. Pero los espacios no son uno de ellos, porque se cambian a guiones manejados en otro lugar.

La buena noticia es que hay otro filtro, sanitize_file_name, que le permite modificar o reemplazar el resultado sanitario.

Entonces, una forma en que podría comenzar a trabajar es usar ese filtro para reemplazar los guiones con espacios. Un problema con eso es que no todos los guiones eran espacios al principio.

Desde el sanitize_file_name filter obtiene el nombre del archivo original sin filtrar como argumento, puede usar ese filtro para reemplazar uno completo sanitize_file_name() con su propia función para santificar nombres de archivos que no eliminan espacios.

La línea de espacios parece estar desconectada 1791 Delaware wp-includes/formatting.php:

$filename = preg_replace( '/[rnt -]+/', '-', $filename );

Si eso ha cambiado hasta ahora (vea la brecha entre t y - remoto):

$filename = preg_replace( '/[rnt-]+/', '-', $filename );

Entonces no serán reemplazados por nuevos espacios.

Entonces la solución es copiar sanitize_file_name() en su totalidad una nueva función, con ese cambio, y otros dos cambios.

Cambie los argumentos para incluir el nombre del archivo sin formato como segundo argumento. Eliminar referencias a santitize_file_name filtrar para que no obtenga un bucle infinito.

Entonces usa add_filter úselo. Juntos, esto te dará: https://gist.github.com/JakePT/0c8090f13977ae04c169843b3b504fa3

Ahora, antes de usar esto, hay algunas cosas a considerar:

WordPress está reemplazando espacios con guiones por una razón. Puede haber problemas en ciertos entornos o problemas con plugins o scripts que esperan que los nombres de archivo no tengan espacios. Ahora eres responsable de la función que protege los nombres de archivo. Si hay vulnerabilidades o problemas, sanitize_file_name() si lo encuentra, no recibirá el beneficio de ningún apósito futuro. Deberá aplicarlos manualmente.

Personalmente, no creo que los guiones en los nombres de los archivos sean un problema suficiente para abordar ambas consideraciones, pero tenía suficiente curiosidad sobre el problema para encontrar una posible solución. Depende de ti lidiar con eso.

Esta respuesta fue modificada hace 3 años, 4 meses por. Esta respuesta fue modificada hace 3 años, 4 meses por. Esta respuesta fue modificada hace 3 años, 4 meses por. Esta respuesta fue modificada hace 3 años, 4 meses por. Esta respuesta fue modificada hace 3 años, 4 meses por. Lanzador de hilos

(@dannyrushpl)

Hace 3 años, 4 meses

¡¡Muchísimas gracias!! Estaba buscando esa función.

entonces … si puede haber algún problema con esto, ¿hay alguna forma de reemplazar los espacios que aparecen con guiones en todos los archivos, pero no en .mp3?

(@jakept)

Hace 3 años, 4 meses

Creo que al comienzo de esta función agregue:

if ( strcasecmp( substr( strrchr( $sanitized_filename, '.' ), 1 ), 'mp3' ) == 0 ) {
	return $sanitized_filename;
}

Si la extensión del archivo es mp3, solo lo pasará por la versión previamente desinfectada.

Esta respuesta fue modificada hace 3 años, 4 meses por. Esta respuesta fue modificada hace 3 años, 4 meses por.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *