Cambiar tipos de archivo que se pueden subir

Hosting Seguro para WordPress con Soporte especializado

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 este artículo para mejorar la calidad del blog ...

PobreRegularEstá bienMuy buenoExcelente (sin valoración aún)
Loading...Loading...

autor: Fernando

Fernando Tellado, maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaino de nacimiento, Español de corazón y ciudadano de donde me quieran. Autor del libro WordPress - La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

comparte esta entrada en

Pin It on Pinterest

Share This