Cambiar tipos de archivo que se pueden subir

WordPress, por defecto, limita los tipos «mime» de archivos que puedes subir a través del cargador del editor de entradas. Esto, que es bueno en principio porque restringe la carga de ficheros potencialmente peligrosos, para según qué usos es una restricción demasiado excesiva.

Afortunadamente se puede cambiar este comportamiento recurriendo al «hook» llamado 'upload_mimes', lamentablemente nada documentado en el Codex.

Para empezar, debes saber que hay 35 tipos de archivo permitidos por defecto, definidos en el fichero '/wp-includes/functions.php' de tu instalación de WordPress. Si revisas el fichero, verás la siguiente leyenda a partir de la línea 2275:

function get_allowed_mime_types() {
	static $mimes = false;

	if ( !$mimes ) {
		// Accepted MIME types are set here as PCRE unless provided.
		$mimes = apply_filters( 'upload_mimes', array(
		'jpg|jpeg|jpe' => 'image/jpeg',
		'gif' => 'image/gif',
		'png' => 'image/png',
		'bmp' => 'image/bmp',
		'tif|tiff' => 'image/tiff',
		'ico' => 'image/x-icon',
		'asf|asx|wax|wmv|wmx' => 'video/asf',
		'avi' => 'video/avi',
		'divx' => 'video/divx',
		'flv' => 'video/x-flv',
		'mov|qt' => 'video/quicktime',
		'mpeg|mpg|mpe' => 'video/mpeg',
		'txt|c|cc|h' => 'text/plain',
		'rtx' => 'text/richtext',
		'css' => 'text/css',
		'htm|html' => 'text/html',
		'mp3|m4a' => 'audio/mpeg',
		'mp4|m4v' => 'video/mp4',
		'ra|ram' => 'audio/x-realaudio',
		'wav' => 'audio/wav',
		'ogg' => 'audio/ogg',
		'mid|midi' => 'audio/midi',
		'wma' => 'audio/wma',
		'rtf' => 'application/rtf',
		'js' => 'application/javascript',
		'pdf' => 'application/pdf',
		'doc|docx' => 'application/msword',
		'pot|pps|ppt|pptx' => 'application/vnd.ms-powerpoint',
		'wri' => 'application/vnd.ms-write',
		'xla|xls|xlsx|xlt|xlw' => 'application/vnd.ms-excel',
		'mdb' => 'application/vnd.ms-access',
		'mpp' => 'application/vnd.ms-project',
		'swf' => 'application/x-shockwave-flash',
		'class' => 'application/java',
		'tar' => 'application/x-tar',
		'zip' => 'application/zip',
		'gz|gzip' => 'application/x-gzip',
		'exe' => 'application/x-msdownload',
		// openoffice formats
		'odt' => 'application/vnd.oasis.opendocument.text',
		'odp' => 'application/vnd.oasis.opendocument.presentation',
		'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
		'odg' => 'application/vnd.oasis.opendocument.graphics',
		'odc' => 'application/vnd.oasis.opendocument.chart',
		'odb' => 'application/vnd.oasis.opendocument.database',
		'odf' => 'application/vnd.oasis.opendocument.formula',
		) );
	}

	return $mimes;
}

Si necesitas algún tipo de archivo que no esté en la lista puedes hacer dos cosas. Una, muy obvia, es añadir el tipo de fichero en esa lista, pero esto tiene un problema: tienes que acordarte de volver a añadirlo cada vez que actualices WordPress, además de que no es buena idea modificar los ficheros core.

Una idea mucho mejor es crear una nueva función en el fichero functions.php de tu tema, que siempre podrás exportar a otro tema fácilmente, y no perderás aunque actualices WordPress.

Para ello lo tienes que añadir estas líneas:

//Añadiendo mimes
add_filter('upload_mimes', 'mis_mimes');
function mis_mimes ( $existing_mimes=array() ) {
// agrega tu ext => mime al array
$existing_mimes['ext'] = 'mime/type';
// agrega tantas como necesites
// y devuelve el resultado a la lista completa
return $existing_mimes;
}

Fíjate que la función acepta el array $existing_mimes, añade un nuevo tipo de archivo (con la extensión «ext» y el tipo de mime “mime/type”), luego devuelve el array completo.

Por supuesto, tienes que reemplazar la palabra «ext» con la extensión que quieras añadir y luego busca en Google para saber cual es su mime type3 y ponerlo correctamente (si no lo supieras). A partir de ahí puedes ir copiando la línea e ir añadiendo tantas líneas como tipos de archivo necesites agregar, cada una con su extensión y mime type, claro.

¿Que lo que quieres es anular extensiones de archivo en vez de añadirlas?, pues entonces esto es lo que debes hacer:

Reemplaza la línea $existing_mimes['ext'] = 'mime/type'; por unset( $existing_mimes['ext']); y ya lo tienes. Un ejemplo sería este:

unset( $existing_mimes['exe'] );

Interesante ¿no?. Espero te sirva para dar algo más de seguridad a tu instalación de WordPress, sobre todo si otros usuarios tienen acceso a la misma.

Fuentes: Option filters (Codex) | Chris Meller | Head first productions

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(2 votos, promedio: 4)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

7 comentarios en “Cambiar tipos de archivo que se pueden subir”

  1. Creo que esto tomará más peso desde la versión 3.0, por razones obvias. De todas formas, un buen truco, para tenerlo debajo de la manga. 😉

    Saludos!

  2. Pingback: Alterar os tipos de arquivo podem ser inseridos | Ajuda Wordpress em Português

  3. Pingback: Añadir tipos de archivo que se pueden subir | Ayuda WordPress

  4. Tremiño María

    Bueno, y una vez metidas las funciones ¿Qué se hace? jejejeje, porque a mi no me deja subir un vídeo
    ¿Podrías decirme como subo el vídeo después de meter las funciones? Gracias.

Deja un comentario

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

 

Ir arriba Ir al contenido