Advertisements

media_sideload_image

Definition:
function media_sideload_image($file, $post_id, $desc = null) {}

Download an image from the specified URL and attach it to a post.

Parameters

  • string $file: The URL of the image to download
  • int $post_id: The post ID the media is to be associated with
  • string $desc: Optional. Description of the image

Return values

returns:Populated HTML img tag on success

Source code

function media_sideload_image($file, $post_id, $desc = null) {

	if ( ! empty($file) ) {

		// Download file to temp location

		$tmp = download_url( $file );



		// Set variables for storage

		// fix file filename for query strings

		preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches);

		$file_array['name'] = basename($matches[0]);

		$file_array['tmp_name'] = $tmp;



		// If error storing temporarily, unlink

		if ( is_wp_error( $tmp ) ) {

			@unlink($file_array['tmp_name']);

			$file_array['tmp_name'] = '';

		}



		// do the validation and storage stuff

		$id = media_handle_sideload( $file_array, $post_id, $desc );

		// If error storing permanently, unlink

		if ( is_wp_error($id) ) {

			@unlink($file_array['tmp_name']);

			return $id;

		}



		$src = wp_get_attachment_url( $id );

	}



	// Finally check to make sure the file has been saved, then return the html

	if ( ! empty($src) ) {

		$alt = isset($desc) ? esc_attr($desc) : '';

		$html = "<img src='$src' alt='$alt' />";

		return $html;

	}

}

2357

Advertisements

One Response to “media_sideload_image”

  1. Hi, the download_url function do a call to undefined function

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: