17mar
6

Alojamiento Wordpress con Soporte

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 ...

MaloPobreNo está malMe gustaExcelente (sin valoración aún)
Loading...Loading...
546f0dfc87c97fc8a22a12a512ee3a12
Share

Anúnciese aquí »