Advertisements

wp_insert_attachment

Definition:
function wp_insert_attachment($object, $file = false, $parent = 0) {}

Insert an attachment.
If you set the ‘ID’ in the $object parameter, it will mean that you are updating and attempt to update the attachment. You can also set the attachment name or title by setting the key ‘post_name’ or ‘post_title’.

Parameters

  • string|array $object: Arguments to override defaults.
  • string $file: Optional filename.
  • int $parent: Parent post ID.

Return values

returns:Attachment ID.

Defined actions

  • edit_attachment
    do_action('edit_attachment', $post_ID);
  • add_attachment
    do_action('add_attachment', $post_ID);

Source code

function wp_insert_attachment($object, $file = false, $parent = 0) {

	global $wpdb, $user_ID;



	$defaults = array('post_status' => 'inherit', 'post_type' => 'post', 'post_author' => $user_ID,

		'ping_status' => get_option('default_ping_status'), 'post_parent' => 0,

		'menu_order' => 0, 'to_ping' =>  '', 'pinged' => '', 'post_password' => '',

		'guid' => '', 'post_content_filtered' => '', 'post_excerpt' => '', 'import_id' => 0, 'context' => '');



	$object = wp_parse_args($object, $defaults);

	if ( !empty($parent) )

		$object['post_parent'] = $parent;



	unset( $object[ 'filter' ] );



	$object = sanitize_post($object, 'db');



	// export array as variables

	extract($object, EXTR_SKIP);



	if ( empty($post_author) )

		$post_author = $user_ID;



	$post_type = 'attachment';



	if ( ! in_array( $post_status, array( 'inherit', 'private' ) ) )

		$post_status = 'inherit';



	// Make sure we set a valid category.

	if ( !isset($post_category) || 0 == count($post_category) || !is_array($post_category) ) {

		// 'post' requires at least one category.

		if ( 'post' == $post_type )

			$post_category = array( get_option('default_category') );

		else

			$post_category = array();

	}



	// Are we updating or creating?

	if ( !empty($ID) ) {

		$update = true;

		$post_ID = (int) $ID;

	} else {

		$update = false;

		$post_ID = 0;

	}



	// Create a valid post name.

	if ( empty($post_name) )

		$post_name = sanitize_title($post_title);

	else

		$post_name = sanitize_title($post_name);



	// expected_slashed ($post_name)

	$post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);



	if ( empty($post_date) )

		$post_date = current_time('mysql');

	if ( empty($post_date_gmt) )

		$post_date_gmt = current_time('mysql', 1);



	if ( empty($post_modified) )

		$post_modified = $post_date;

	if ( empty($post_modified_gmt) )

		$post_modified_gmt = $post_date_gmt;



	if ( empty($comment_status) ) {

		if ( $update )

			$comment_status = 'closed';

		else

			$comment_status = get_option('default_comment_status');

	}

	if ( empty($ping_status) )

		$ping_status = get_option('default_ping_status');



	if ( isset($to_ping) )

		$to_ping = preg_replace('|\s+|', "\n", $to_ping);

	else

		$to_ping = '';



	if ( isset($post_parent) )

		$post_parent = (int) $post_parent;

	else

		$post_parent = 0;



	if ( isset($menu_order) )

		$menu_order = (int) $menu_order;

	else

		$menu_order = 0;



	if ( !isset($post_password) )

		$post_password = '';



	if ( ! isset($pinged) )

		$pinged = '';



	// expected_slashed (everything!)

	$data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) );

	$data = stripslashes_deep( $data );



	if ( $update ) {

		$wpdb->update( $wpdb->posts, $data, array( 'ID' => $post_ID ) );

	} else {

		// If there is a suggested ID, use it if not already present

		if ( !empty($import_id) ) {

			$import_id = (int) $import_id;

			if ( ! $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE ID = %d", $import_id) ) ) {

				$data['ID'] = $import_id;

			}

		}



		$wpdb->insert( $wpdb->posts, $data );

		$post_ID = (int) $wpdb->insert_id;

	}



	if ( empty($post_name) ) {

		$post_name = sanitize_title($post_title, $post_ID);

		$wpdb->update( $wpdb->posts, compact("post_name"), array( 'ID' => $post_ID ) );

	}



	wp_set_post_categories($post_ID, $post_category);



	if ( $file )

		update_attached_file( $post_ID, $file );



	clean_post_cache($post_ID);



	if ( ! empty( $context ) )

		add_post_meta( $post_ID, '_wp_attachment_context', $context, true );



	if ( $update) {

		do_action('edit_attachment', $post_ID);

	} else {

		do_action('add_attachment', $post_ID);

	}



	return $post_ID;

}

3785

Advertisements

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 )

Google+ photo

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

Connecting to %s

%d bloggers like this: