• 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
  • Mostrar el nombre del archivo que esta usando un tema sin usar pluginsMostrar el nombre del archivo que esta usando un tema sin usar plugins
  • Mover barra lateral al inicio en móvilesMover barra lateral al inicio en móviles
  • Abrir enlaces externos en un nuevo tab automáticamenteAbrir enlaces externos en un nuevo tab automáticamente
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

Ú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

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

Modificar el mensaje de notificación de comentarios en WordPress

Formulario de contacto con Ajax en WordPress

Optimizar la carga de Javascript en WordPress con Async y Defer

Mostrar datos desde una tabla personalizada de la base de datos de WordPress

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