Subir archivos de extensiones no permitidas a WordPress

Seguro que mas de una vez te has encontrado con el mensaje:
Lo siento, este tipo de archivo no está permitido por motivos de seguridad. 
WordPress limita el formato de los archivos permitidos para evitar la ejecución de código malicioso o virus que pueda destrozar nuestra web; también algunos proveedores hosting deciden limitar la propia lista de extensiones de WordPress para evitar cualquier archivo que ellos consideran como potencialmente peligroso. Pero hay algunos tipos de archivos que no están permitidos pero que nos interesa que si se puedan subir y utilizar en nuestra web, como por ejemplo algún formato de imagen como svg o webp.

Vamos a mostrar un par de formas para lograr que se puedan subir estos tipos, u otros, a nuestra biblioteca de medios.
Permitir la subida de cualquier tipo de archivo
(no recomendado)
Esta solución es la más sencilla pero peligrosa: si permitimos cualquier tipo de archivo, nuestra web será más vulnerable a ataques informáticos o a errores. Por ello, es muy importante que, tras subir el archivo deseado, revertamos los permisos que os explicamos a continuación. ¿Cómo debemos proceder? Lo primero que debemos tener es un permiso de Administrador de Archivos. En nuestro servidor, acudiremos al directorio donde hemos instalado WordPresss y editaremos el archivo wp-config.php, insertando la siguiente línea:
define( 'ALLOW_UNFILTERED_UPLOADS', true);

Con esto ya se puede subir cualquier tipo de documento y extensión, pero insistimos en que este método no es para nada aconsejable.

Método Selectivo y mas Seguro

El segundo método es un poco mas complicado pero a la vez mas seguro, además de que permitir solo aquellos archivos que nosotros queramos e introduzcamos en el código.
  Para ello utilizamos el código php de abajo, el cuál se puede insertar directamente en el archivo functions.php o bien utilizar un plugin del tipo Advanced Scripts (opción mas recomendable) , aquí se hace uso de la función upload mimes. Esta opción, además de añadir nuevos tipos de extensión autorizada, nos permite eliminar formatos que ya estaban permitidos por defecto en la lista de WordPress. 

<?php // Tipos de archivos permitidos add_filter("upload_mimes", function ($mimes) { $mimes["json"] = "application/json"; $mimes['svg'] = 'image/svg'; $mimes['svgz'] = 'image/svg+xml'; $mimes['doc'] = 'application/msword'; $mimes['webp'] = 'image/webp'; return $mimes; }); // Forzar el tipo de archivo mime para evitar //las comprobaciones de seguridad falsas // debido a problemasde php fileinfo add_filter("wp_check_filetype_and_ext", function ($result, $file, $filename, $mimes) { if (!$result["ext"] || !$result["type"]) { $filetype = wp_check_filetype($filename, $mimes); $ext = $filetype["ext"]; $type = $filetype["type"]; $allowed_types = [ "json" => [ "application/json" ], ]; if (isset($allowed_types[$ext]) && in_array($type, $allowed_types[$ext])) { $result = [ "ext" => $ext, "type" => $type, "proper_filename" => $filename ]; } } return $result; }, 10, 4);

Este código lo puedes modificar añadiendo o quitando las extensiones de archivo pertinentes, para ello solo tienes que añadir o modificar tantas líneas $mimes['xxx'] = 'yyy/yyy';  como necesites, donde las x y las y representan los datos de cada archivo.

archivospermitidos
Hay una tercera solución que es la utilización de un plugin

La solución más sencilla para los que no son expertos o simplemente no quieren modificar archivos de código es la instalación de un Plugin. Esta solución es un poco menos eficiente,  puesto que ralentiza la subida de archivos además de que requiere de la instalación de un plugin, uno muy bueno es el WP Extra File Types que abarca una gran variedad de archivos y para nada es difícil de configurar.

Nota del Equipo

En este artículo hay enlaces de referido, no te cuesta nada usarlos si te planteas la compra de alguno de estos programas o plugins aquí mencionados, nos ayudas a sufragar los gastos del mantenimiento de este sitio y además es una forma de reconocer nuestro trabajo.

databasefile-emptyrocketthumbs-uplayers