
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() {
-
-
if ( !$mimes ) {
-
// Accepted MIME types are set here as PCRE unless provided.
-
'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');
-
// 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:
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
También te puede interesar :
Si el otro día vimos la teoría completa, y una solución bastante elaborada, acerca de como g ...
[gallery link="file"] Una de las posibilidades más interesantes a la hora de usar WordPress c ...
¿Aún no te atreves a usar una Comunidad WordPress?, a ver si este vídeo te termina de animar … ...
















6 comentarios en “Cambiar tipos de archivo que se pueden subir”
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!
Muy ilustrativo, Fernando.
No puedo encontrar el mime type 3 correcto. Agradezco cualquier ayuda.
Gracias!!!
Victor
[...] Fonte: ayudawordpress [...]
[...] el otro día vimos la teoría completa, y una solución bastante elaborada, acerca de como gestionar los tipos de archivo que podemos subir en WordPress, hoy tenemos otra manera de añadir tipos de archivo mucho más [...]
Muy clara la explicacion .
Muchas gracias
Escribe un Comentario