Cómo subir archivos con extensiones adicionales a WordPress

Publicada en WordPress.

Mira nuestro vídeo

Existe una versión mejor de tu web

Comparte este artículo

Poder gestionar los archivos que vamos subiendo a WordPress en un único sitio suele ser algo muy interesante. Y aunque la biblioteca de medios podría mejorarse (etiquetado de archivos, clasificación por temáticas o por extensión de los archivos, búsqueda de duplicados, etc.), su utilidad es muy clara para poder compartir o reaprovechar archivos entre nuestras entradas sin tener que subirlos más de una vez.

Quizás no te habías dado cuenta, pero WordPress sólo permite subir archivos a la biblioteca de medios si estos cumplen ciertas condiciones. En concreto, sólo podrás subir los siguientes tipos de archivos por defecto:

  • Imágenes
    • .jpg
    • .jpeg
    • .png
    • .gif
    • .ico
  • Documentos
    • .pdf (Portable Document Format; Adobe Acrobat)
    • .doc, .docx (Microsoft Word Document)
    • .ppt, .pptx, .pps, .ppsx (Microsoft PowerPoint Presentation)
    • .odt (OpenDocument Text Document)
    • .xls, .xlsx (Microsoft Excel Document)
    • .psd (Adobe Photoshop Document)
  • Audio
    • .mp3
    • .m4a
    • .ogg
    • .wav
  • Video
    • .mp4, .m4v (MPEG-4)
    • .mov (QuickTime)
    • .wmv (Windows Media Video)
    • .avi
    • .mpg
    • .ogv (Ogg)
    • .3gp (3GPP)
    • .3g2 (3GPP2)

Sin embargo, no todos los proveedores de hosting permiten todos estos archivos. Algunos los limitan, así como el tamaño máximo de archivo que puedes subir. Si tienes problemas subiendo estos archivos, contacta primero con tu proveedor para ver cómo lo solucionas. Ah, y por si la lista de tipos de archivo que se pueden subir va ampliándose, en el Codex podrás encontrar siempre la versión más actualizada.

Cuando intentas subir una imagen .SVG a WordPress pasa esto.
Cuando intentas subir una imagen .SVG a WordPress pasa esto. Ya te lo habíamos explicado anteriormente aquí.

Recientemente hemos recibido un comentario que nos preguntaba cómo poder ampliar esta lista añadiendo más tipos de archivo. Como seguramente hay mucha más gente interesada en saber cómo hacer esto, en esta entrada te explico la solución.

Modificando wp-config.php

Si no queremos filtrar los tipos de extensión de archivos y así conseguir que sea posible subir a la librería de medios cualquier archivo, lo más fácil es añadir la siguiente línea dentro del archivo wp-config.php:

define( 'ALLOW_UNFILTERED_UPLOADS', true );

Ya te hemos hablado anteriormente en esta entrada de las posibilidades que el archivo wp-config.php nos permite modificar el comportamiento por defecto de WordPress. Utilizando la instrucción anterior estamos permitiendo a todos los administradores poder subir cualquier tipo de archivo. Ten en cuenta que esto puede llegar a ser peligroso si no confías demasiado en tus administradores y en lo que te puedan hacer. Sé cuidadoso al añadirlo o quizás acabes arrepintiéndote.

Utilizando el filtro upload_mimes

Si queremos solucionar el problema de poder subir extensiones de archivo adicionales a WordPress pero queremos ser mucho más selectivos y únicamente permitir un subconjunto controlado de extensiones, lo mejor que podemos hacer es utilizar el filtro upload_mimes de WordPress. Tienes toda la información, como siempre, en el Codex.

La solución es muy sencilla. Tan solo has de añadir un código similar al siguiente dentro del archivo functions.php de tu tema o creando un plugin nuevo:

Obviando la primera línea, que no has de añadir ya que solo sirve para abrir la definición de código PHP, en la línea 2 indicamos que la función my_mime_types se ejecutará con el filtro upload_mimes. Si quieres saber más sobre filtros y acciones, léete este otro artículo.

A continuación, entre las líneas 3 y 10 definimos la propia función my_mime_types. En esta función nos pasan como parámetro $mime_types que es una lista de tipos permitidos. Por tanto, si queremos, por ejemplo, permitir las extensiones SVG y JSON en la biblioteca de medios, tan solo hemos de añadir las líneas 4 y 5, respectivamente.

Para añadir un tipo de extensión nuevo solo hay que crear una nueva entrada en la lista $mime_types con el tipo de extensión y su mime type. Para saber el mime type de una extensión tienes que ir a la lista oficial de media types que la organización IANA (Internet Assigned Numbers Authority) define.

Pero además, si crees que por defecto WordPress permite demasiados tipos de archivo también podrás prohibir los tipos de archivo que tu quieras tal y como hemos hecho en las líneas 7 y 8 del ejemplo anterior. Estas dos instrucciones eliminan la posibilidad de poder subir archivos de Microsoft Excel.

Resumen final

Como has podido ver, modificar el comportamiento de WordPress por defecto para tener un control mayor de los tipos de archivo que permites en tu instalación es muy sencillo. Y lo mejor de todo es que no vas a necesitar instalar un plugin complicado para ello. Con unas pequeñas líneas de código PHP o incluso modificando el archivo wp-config.php conseguirás tu objetivo.

Ahora te toca a ti. Explícanos que tipos de archivo echas de menos en WordPress y cual ha sido tu experiencia utilizando las soluciones que te he propuesto en esta entrada.

Imagen destacada de Andrew Pons.

12 comentarios en «Cómo subir archivos con extensiones adicionales a WordPress»

  1. Y si no tengo ni idea de código PHP, que plugin me puedo instalar y que me haga la faena?? Es que no quiero tocar donde no se!! Muchas Gracias.

  2. Hola Antonio, no consigo habilitar un filtro para el formato .exe creo que es debido a que no introduzco la MIME correcta, he probado con (application/vnd.microsoft.portable-executable) y con (application/octet-stream)
    pero me sigue denegando la subida.

    Modificando wp-config.php puedo hacerlo, pero me parece un tanto «salvaje» abrir la caja de pandora, así que prefiero poder seleccionar solo determinados formatos.

    function formatos_personalizados ( $mime_types ) {
    $mime_types[‘exe’] = ‘application/vnd.microsoft.portable-executable’;
    return $mime_types;}

    add_filter(‘upload_mimes’, ‘formatos_personalizados’, 1, 1);

  3. Hola que tal, hice todo tal cual pero sigo sin poder importar los widgets (archivo .json) Da el mismo error, alguna solución alternativa?
    muchas gracias!

    1. Quizás no has puesto el código correctamente o el archivo que intentas subir no tiene el tipo de archivo indicado (aunque la extensión sea .json).

  4. los archivos KML si los recibe? o hay que hacer algo para que lo haga?

  5. como puedo añadir un archivo con extensión .apk gracias

Deja una respuesta

No publicaremos tu correo electrónico. Los campos obligatorios están marcados con: •

He leído y acepto la Política de privacidad de Nelio Software

Al marcar la casilla de aceptación estás dando tu legítimo consentimiento para que tu información personal se almacene en SiteGround y sea usada por Nelio Software con el propósito único de publicar aquí este comentario. Contáctanos para corregir, limitar, eliminar o acceder a tu información.