WordPress.org

Make WordPress Core

Ticket #19629: wp-sideload-media-id-ak.diff

File wp-sideload-media-id-ak.diff, 2.8 KB (added by alexkingorg, 21 months ago)

abstract out the sideloading of the image so the ID can be accessed

  • wp-admin/includes/media.php

     
    579579} 
    580580 
    581581/** 
     582 * Download an image from the specified URL and attach it to a post, return the ID. 
     583 * 
     584 * @since 3.5.0 
     585 * 
     586 * @param string $file The URL of the image to download 
     587 * @param int $post_id The post ID the media is to be associated with 
     588 * @param string $desc Optional. Description of the image 
     589 * @return int|WP_Error ID of attachment on success 
     590 */ 
     591function media_sideload_image_id($file, $post_id, $desc = null) { 
     592        if ( empty( $file ) ) { 
     593                return new WP_Error( '', 'File URL cannot be empty.' ); 
     594        } 
     595 
     596        // Download file to temp location 
     597        $tmp = download_url( $file ); 
     598 
     599        // Set variables for storage 
     600        // fix file filename for query strings 
     601        preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches ); 
     602        $file_array['name'] = basename($matches[0]); 
     603        $file_array['tmp_name'] = $tmp; 
     604 
     605        // If error storing temporarily, unlink 
     606        if ( is_wp_error( $tmp ) ) { 
     607                @unlink($file_array['tmp_name']); 
     608                $file_array['tmp_name'] = ''; 
     609        } 
     610 
     611        return media_handle_sideload( $file_array, $post_id, $desc ); 
     612} 
     613 
     614/** 
    582615 * Download an image from the specified URL and attach it to a post. 
    583616 * 
    584617 * @since 2.6.0 
     
    589622 * @return string|WP_Error Populated HTML img tag on success 
    590623 */ 
    591624function media_sideload_image($file, $post_id, $desc = null) { 
    592         if ( ! empty($file) ) { 
    593                 // Download file to temp location 
    594                 $tmp = download_url( $file ); 
     625        if ( empty( $file ) ) { 
     626                return new WP_Error( '', 'File URL cannot be empty.' ); 
     627        } 
    595628 
    596                 // Set variables for storage 
    597                 // fix file filename for query strings 
    598                 preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches ); 
    599                 $file_array['name'] = basename($matches[0]); 
    600                 $file_array['tmp_name'] = $tmp; 
     629        $id = media_sideload_image_id( $file, $post_id, $desc ); 
    601630 
    602                 // If error storing temporarily, unlink 
    603                 if ( is_wp_error( $tmp ) ) { 
    604                         @unlink($file_array['tmp_name']); 
    605                         $file_array['tmp_name'] = ''; 
    606                 } 
     631        // If error storing permanently, unlink 
     632        if ( is_wp_error( $id ) ) { 
     633                @unlink( $file_array['tmp_name'] ); 
     634                return $id; 
     635        } 
    607636 
    608                 // do the validation and storage stuff 
    609                 $id = media_handle_sideload( $file_array, $post_id, $desc ); 
    610                 // If error storing permanently, unlink 
    611                 if ( is_wp_error($id) ) { 
    612                         @unlink($file_array['tmp_name']); 
    613                         return $id; 
    614                 } 
     637        $src = wp_get_attachment_url( $id ); 
    615638 
    616                 $src = wp_get_attachment_url( $id ); 
    617         } 
    618  
    619639        // Finally check to make sure the file has been saved, then return the html 
    620         if ( ! empty($src) ) { 
    621                 $alt = isset($desc) ? esc_attr($desc) : ''; 
     640        if ( ! empty( $src ) ) { 
     641                $alt = isset( $desc ) ? esc_attr( $desc ) : ''; 
    622642                $html = "<img src='$src' alt='$alt' />"; 
    623643                return $html; 
    624644        }