media_handle_upload

Definition:
function media_handle_upload($file_id, $post_id, $post_data = array() {}

This handles the file upload POST itself, creating the attachment post.

Parameters

  • string $file_id: Index into the $_FILES array of the upload
  • int $post_id: The post ID the media is associated with
  • array $post_data: allows you to overwrite some of the attachment
  • array $overrides: allows you to override the wp_handle_upload() behavior

Return values

returns:the ID of the attachment

Source code

function media_handle_upload($file_id, $post_id, $post_data = array(), $overrides = array( 'test_form' => false )) {



	$time = current_time('mysql');

	if ( $post = get_post($post_id) ) {

		if ( substr( $post->post_date, 0, 4 ) > 0 )

			$time = $post->post_date;

	}



	$name = $_FILES[$file_id]['name'];

	$file = wp_handle_upload($_FILES[$file_id], $overrides, $time);



	if ( isset($file['error']) )

		return new WP_Error( 'upload_error', $file['error'] );



	$name_parts = pathinfo($name);

	$name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) );



	$url = $file['url'];

	$type = $file['type'];

	$file = $file['file'];

	$title = $name;

	$content = '';



	// use image exif/iptc data for title and caption defaults if possible

	if ( $image_meta = @wp_read_image_metadata($file) ) {

		if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) )

			$title = $image_meta['title'];

		if ( trim( $image_meta['caption'] ) )

			$content = $image_meta['caption'];

	}



	// Construct the attachment array

	$attachment = array_merge( array(

		'post_mime_type' => $type,

		'guid' => $url,

		'post_parent' => $post_id,

		'post_title' => $title,

		'post_content' => $content,

	), $post_data );



	// This should never be set as it would then overwrite an existing attachment.

	if ( isset( $attachment['ID'] ) )

		unset( $attachment['ID'] );



	// Save the data

	$id = wp_insert_attachment($attachment, $file, $post_id);

	if ( !is_wp_error($id) ) {

		wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );

	}



	return $id;



}

2351

No comments yet... Be the first to leave a reply!

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 )

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: