WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

Custom_Image_Header::ajax_header_crop() public WP 3.9.0

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

Это метод класса: Custom_Image_Header{}

Хуки из метода
Возвращает

Null. Ничего.

Использование

$Custom_Image_Header = new Custom_Image_Header();
$Custom_Image_Header->ajax_header_crop();

Список изменений

С версии 3.9.0 Введена.

Код Custom_Image_Header::ajax_header_crop() WP 5.5.1

wp-admin/includes/class-custom-image-header.php
<?php
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.

	$object = $this->create_attachment_object( $cropped, $attachment_id );

	$previous = $this->get_previous_crop( $object );

	if ( $previous ) {
		$object['ID'] = $previous;
	} else {
		unset( $object['ID'] );
	}

	$new_attachment_id = $this->insert_attachment( $object, $cropped );

	$object['attachment_id'] = $new_attachment_id;
	$object['url']           = wp_get_attachment_url( $new_attachment_id );

	$object['width']  = $dimensions['dst_width'];
	$object['height'] = $dimensions['dst_height'];

	wp_send_json_success( $object );
}