• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Themes / Descarga directa de un archivo desde URL sin plugins

Descarga directa de un archivo desde URL sin plugins

[ 6 enero 2025 ] [ Actualizado: 21 enero 2025 ]
[ Autor: Jhon Marreros Guzmán ][ Themes - Intermedio] [ ]

funcionalidad

Suscríbete a DecodeCMS:  

En algunos casos es posible que necesites la funcionalidad de descarga de archivos, pero quieres que se descarguen directamente y no que se muestren en el navegador (por ejemplo al descargar un PDF).

 

Generalidades

En este artículo veremos como realizar la descarga directa de un archivo de cualquier tipo directamente a través de una URL, además podremos agregar condiciones a la descarga, por ejemplo que sólo se pueda realizar por usuarios registrados. Veremos como hacerlo a través de código.

 

Código para descargar un archivo desde una URL en WordPress

Puedes agregar el siguiente código como parte del archivo functions.php de tu tema hijo o usando algún plugin de Snippets.

add_action( 'template_redirect', 'descargar_archivo_usuarios' );

function descargar_archivo_usuarios() : void {
	if ( ! isset( $_GET['descargar'] ) ) {
		return;
	}

	$path_file = ABSPATH . 'wp-content/uploads/archivo_a_descargar.zip';

	if ( ! file_exists( $path_file ) ) {
		echo "El archivo no existe <a href='" . home_url() . "'>Volver</a>";
		exit;
	}

	if (!is_user_logged_in()) {
		echo "Debes iniciar sesión para descargar el archivo <a href='" . wp_login_url() . "'>Iniciar sesión</a>";
		exit;
	}

	$file_info = new finfo(FILEINFO_MIME_TYPE);
	$mime_type = $file_info->file($path_file);

	header( 'Content-Type: ' . $mime_type );
	header( 'Content-Disposition: attachment; filename="' . basename($path_file) . '"' );
	readfile( $path_file );
	exit;
}

En el código anterior:

  • Usamos el hook template_redirect que hace referencia a la función descargar_archivo_usuarios
  • Dentro de la función comprobamos que exista un parámetro llamado «descargar» como parte de la URL, sino existe el resto del código no se ejecutará
  • Definimos la ruta del archivo a descargar, en nuestro caso será un archivo .zip pero puede ser de cualquier otra extensión
  • Comprobamos que el archivo exista
  • Hacemos otra comprobación para detectar si el usuario esta conectado
  • Finalmente tenemos el código para forzar la descarga, obtenemos información del tipo de archivo para usarla posteriormente como parte de la cabecera
  • Establecemos el nuevo nombre del archivo y forzamos la descarga

 

Conclusión

Como hemos podido comprobar, puedes habilitar la descarga de un archivo usando los parámetros de las URLs, y adicionalmente colocar condiciones a la descarga, por ejemplo que sea para usuarios conectados, hemos visto como realizar esto directamente a través de código y sin usar plugins.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Evitar la descarga directa de archivos en WordPressEvitar la descarga directa de archivos en WordPress
  • Personalizar el formulario de login de WordPressPersonalizar el formulario de login de WordPress
  • Fijar Widget lateral en WordPress sin pluginsFijar Widget lateral en WordPress sin plugins
  • Refrescar estilos CSS navegador usuarioRefrescar los estilos CSS almacenados en el navegador de un usuario
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Entradas relacionadas mejoradas sin plugins en WordPress

Favicon para modo oscuro y modo claro en WordPress

Deshabilitar comentarios en entradas de categorías específicas

Agregar Whatsapp en WordPress sin usar plugins

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados