• This is a weird issue. I’ve made a little function to download an image from an external source and add it as an attachment. Here’s the code:

    function download_image_copy( $url, $desc = '' ) {
    	require_once(ABSPATH . 'wp-admin/includes/file.php');
    	require_once(ABSPATH . 'wp-admin/includes/media.php');
    
    	$types = 'jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG';
    	$file_array = array();
    
    	$file_array['tmp_name'] = download_url( $url );
    	if( is_wp_error( $file_array['tmp_name'] ) ) {
    		@unlink( $file_array['tmp_name'] );
    		return $url;
    	}
    
    	$pathparts = pathinfo( $file_array['tmp_name'] );
    	$file_array['name'] = basename( $url );
    	// fix file extension
    	if( '' == $pathparts['extension'] || ! in_array( $pathparts['extension'], explode( '|', $types ) ) ) {
    		$_file = $pathparts['dirname'] . DS . $file_array['name'];
    		rename( $file_array['tmp_name'], $_file );
    		$file_array['name'] = basename( $_file );
    		$file_array['tmp_name'] = $_file;
    	}
    
    	$id = media_handle_sideload( $file_array, 1, $desc );
    	echo 'Wow! We never reach this place!';
    
    	if( is_wp_error( $id ) ) {
    		@unlink( $file_array['tmp_name'] );
    		return $url;
    	}
    
    	$src = wp_get_attachment_url( $id );
    	return $src;
    }
    
    // let's try it out
    echo download_image_copy( 'https://dribbble.s3.amazonaws.com/users/81899/screenshots/1170460/untitled-1.png' );

    Sidenote: Sorry for pasting this code here. I can’t access PasteBin.

    The page stops just after calling the media_handle_sideload function, it actually never reaches that echo statement in the next line. I have enabled the debug mode but it doesn’t display any errors.
    That “fix file extension” block in the code was added because for me the download_url returns any file with an extension of “tmp” and so media_handle_sideload function was throwing “wrong media type” error. I have inspected the $file_array var and the path to the file and it’s name are correct and exists on my filesystem.

    Thanks for shedding any light on this.

  • The topic ‘media_handle_sideload kills the page without any errors’ is closed to new replies.