Custom_Image_Header::ajax_header_crop()

In this article

Gets attachment uploaded by Media Manager, crops it, then saves it as a new object. Returns JSON-encoded object details.

Source

public function ajax_header_crop() {	check_ajax_referer( 'image_editor-' . $_POST['id'], 'nonce' );	if ( ! current_user_can( 'edit_theme_options' ) ) {	wp_send_json_error();	}	if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) {	wp_send_json_error();	}	$crop_details = $_POST['cropDetails'];	$dimensions = $this->get_header_dimensions(	array(	'height' => $crop_details['height'],	'width' => $crop_details['width'],	)	);	$attachment_id = absint( $_POST['id'] );	$cropped = wp_crop_image(	$attachment_id,	(int) $crop_details['x1'],	(int) $crop_details['y1'],	(int) $crop_details['width'],	(int) $crop_details['height'],	(int) $dimensions['dst_width'],	(int) $dimensions['dst_height']	);	if ( ! $cropped || is_wp_error( $cropped ) ) {	wp_send_json_error( array( 'message' => __( 'Image could not be processed. Please go back and try again.' ) ) );	}	/** This filter is documented in wp-admin/includes/class-custom-image-header.php */	$cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication.	$attachment = wp_copy_parent_attachment_properties( $cropped, $attachment_id, 'custom-header' );	$previous = $this->get_previous_crop( $attachment );	if ( $previous ) {	$attachment['ID'] = $previous;	} else {	unset( $attachment['ID'] );	}	$new_attachment_id = $this->insert_attachment( $attachment, $cropped );	$attachment['attachment_id'] = $new_attachment_id;	$attachment['url'] = wp_get_attachment_url( $new_attachment_id );	$attachment['width'] = $dimensions['dst_width'];	$attachment['height'] = $dimensions['dst_height'];	wp_send_json_success( $attachment ); } 

Hooks

apply_filters( ‘wp_create_file_in_uploads’, string $file, int $attachment_id )

Filters the attachment file path after the custom header or background image is set.

Changelog

VersionDescription
3.9.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.