WordPress: forzare il download di un file allegato

Short link

In WordPress è possibile forzare il download di un file allegato.

Avendo ottenuto l'ID del file, possiamo implementare la seguente soluzione.


function my_file_download() {
	if( isset( $_GET['file'] ) && is_numeric( $_GET['file']) ) {
		$file = get_attached_file( intval( $_GET['file'] ) );

		if ( file_exists( $file ) ) {
			header( 'Content-Description: File Transfer' );
			header( 'Content-Type: application/octet-stream' );
			header( 'Content-Disposition: attachment; filename="'.basename( $file ).'"' );
			header( 'Expires: 0' );
			header( 'Cache-Control: must-revalidate' );
			header( 'Pragma: public' );
			header( 'Content-Length: ' . filesize( $file ) );
			readfile( $file );
			exit;
		}
	}
}

L'autore

Gabriele Romanato, sviluppatore web full stack specializzato in siti, applicativi web ed e-commerce con Node.js e PHP.