WC_API_Products::set_uploaded_image_as_attachment()protectedWC 2.5.0

Set uploaded image as attachment.

Method of the class: WC_API_Products{}

No Hooks.

Return

Int. Attachment ID

Usage

// protected - for code of main (parent) or child class
$result = $this->set_uploaded_image_as_attachment( $upload, $id );
$upload(array) (required)
Upload information from wp_upload_bits
$id(int)
Post ID.

Changelog

Since 2.5.0 Introduced.

WC_API_Products::set_uploaded_image_as_attachment() code WC 8.7.0

protected function set_uploaded_image_as_attachment( $upload, $id = 0 ) {
	$info    = wp_check_filetype( $upload['file'] );
	$title   = '';
	$content = '';

	if ( $image_meta = @wp_read_image_metadata( $upload['file'] ) ) {
		if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {
			$title = wc_clean( $image_meta['title'] );
		}
		if ( trim( $image_meta['caption'] ) ) {
			$content = wc_clean( $image_meta['caption'] );
		}
	}

	$attachment = array(
		'post_mime_type' => $info['type'],
		'guid'           => $upload['url'],
		'post_parent'    => $id,
		'post_title'     => $title,
		'post_content'   => $content,
	);

	$attachment_id = wp_insert_attachment( $attachment, $upload['file'], $id );
	if ( ! is_wp_error( $attachment_id ) ) {
		wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $upload['file'] ) );
	}

	return $attachment_id;
}