Customize: Provide a default way to save cropped images.
Allows plugins and themes to use `WP_Customize_Cropped_Image_Control` without having to define their own way of saving the cropped image. Props celloexpressions for initial patch. Fixes #29211. Built from https://develop.svn.wordpress.org/trunk@33280 git-svn-id: http://core.svn.wordpress.org/trunk@33252 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
4cb73cf347
commit
2883bbbb68
|
@ -3094,19 +3094,60 @@ function wp_ajax_crop_image() {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fires before a cropped image is saved.
|
||||||
|
*
|
||||||
|
* Allows to add filters to modify the way a cropped image is saved.
|
||||||
|
*
|
||||||
|
* @since 4.3.0
|
||||||
|
*
|
||||||
|
* @param string $context The Customizer control requesting the cropped image.
|
||||||
|
* @param int $attachment_id The attachment ID of the original image.
|
||||||
|
* @param string $cropped Path to the cropped image file.
|
||||||
|
*/
|
||||||
|
do_action( 'wp_ajax_crop_image_pre_save', $context, $attachment_id, $cropped );
|
||||||
|
|
||||||
|
/** This filter is documented in wp-admin/custom-header.php */
|
||||||
|
$cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication.
|
||||||
|
|
||||||
|
$parent_url = get_post( $attachment_id )->guid;
|
||||||
|
$url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url );
|
||||||
|
|
||||||
|
$size = @getimagesize( $cropped );
|
||||||
|
$image_type = ( $size ) ? $size['mime'] : 'image/jpeg';
|
||||||
|
|
||||||
|
$object = array(
|
||||||
|
'post_title' => basename( $cropped ),
|
||||||
|
'post_content' => $url,
|
||||||
|
'post_mime_type' => $image_type,
|
||||||
|
'guid' => $url,
|
||||||
|
'context' => $context,
|
||||||
|
);
|
||||||
|
|
||||||
|
$attachment_id = wp_insert_attachment( $object, $cropped );
|
||||||
|
$metadata = wp_generate_attachment_metadata( $attachment_id, $cropped );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the cropped image attachment metadata.
|
||||||
|
*
|
||||||
|
* @since 4.3.0
|
||||||
|
*
|
||||||
|
* @see wp_generate_attachment_metadata()
|
||||||
|
*
|
||||||
|
* @param array $metadata Attachment metadata.
|
||||||
|
*/
|
||||||
|
$metadata = apply_filters( 'wp_ajax_cropped_attachment_metadata', $metadata );
|
||||||
|
wp_update_attachment_metadata( $attachment_id, $metadata );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter the attachment ID for a cropped image.
|
* Filter the attachment ID for a cropped image.
|
||||||
*
|
*
|
||||||
* @since 4.3.0
|
* @since 4.3.0
|
||||||
*
|
*
|
||||||
* @param int $attachment_id The ID of the cropped image.
|
* @param int $attachment_id The attachment ID of the cropped image.
|
||||||
* @param string $context The feature requesting the cropped image.
|
* @param string $context The Customizer control requesting the cropped image.
|
||||||
*/
|
*/
|
||||||
$attachment_id = apply_filters( 'wp_ajax_cropped_attachment_id', 0, $context );
|
$attachment_id = apply_filters( 'wp_ajax_cropped_attachment_id', $attachment_id, $context );
|
||||||
|
|
||||||
if ( ! $attachment_id ) {
|
|
||||||
wp_send_json_error();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_send_json_success( wp_prepare_attachment_for_js( $attachment_id ) );
|
wp_send_json_success( wp_prepare_attachment_for_js( $attachment_id ) );
|
||||||
|
|
|
@ -1005,9 +1005,9 @@ class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
|
||||||
*
|
*
|
||||||
* @since 4.3.0
|
* @since 4.3.0
|
||||||
*
|
*
|
||||||
* @see WP_Customize_Image_Control
|
* @see WP_Customize_Media_Control
|
||||||
*/
|
*/
|
||||||
class WP_Customize_Cropped_Image_Control extends WP_Customize_Image_Control {
|
class WP_Customize_Cropped_Image_Control extends WP_Customize_Media_Control {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Control type.
|
* Control type.
|
||||||
|
|
|
@ -410,7 +410,7 @@ function wp_default_scripts( &$scripts ) {
|
||||||
$scripts->add( 'customize-loader', "/wp-includes/js/customize-loader$suffix.js", array( 'customize-base' ), false, 1 );
|
$scripts->add( 'customize-loader', "/wp-includes/js/customize-loader$suffix.js", array( 'customize-base' ), false, 1 );
|
||||||
$scripts->add( 'customize-preview', "/wp-includes/js/customize-preview$suffix.js", array( 'customize-base' ), false, 1 );
|
$scripts->add( 'customize-preview', "/wp-includes/js/customize-preview$suffix.js", array( 'customize-base' ), false, 1 );
|
||||||
$scripts->add( 'customize-models', "/wp-includes/js/customize-models.js", array( 'underscore', 'backbone' ), false, 1 );
|
$scripts->add( 'customize-models', "/wp-includes/js/customize-models.js", array( 'underscore', 'backbone' ), false, 1 );
|
||||||
$scripts->add( 'customize-views', "/wp-includes/js/customize-views.js", array( 'jquery', 'underscore', 'imgareaselect', 'customize-models' ), false, 1 );
|
$scripts->add( 'customize-views', "/wp-includes/js/customize-views.js", array( 'jquery', 'underscore', 'imgareaselect', 'customize-models', 'media-editor', 'media-views' ), false, 1 );
|
||||||
$scripts->add( 'customize-controls', "/wp-admin/js/customize-controls$suffix.js", array( 'customize-base' ), false, 1 );
|
$scripts->add( 'customize-controls', "/wp-admin/js/customize-controls$suffix.js", array( 'customize-base' ), false, 1 );
|
||||||
did_action( 'init' ) && $scripts->localize( 'customize-controls', '_wpCustomizeControlsL10n', array(
|
did_action( 'init' ) && $scripts->localize( 'customize-controls', '_wpCustomizeControlsL10n', array(
|
||||||
'activate' => __( 'Save & Activate' ),
|
'activate' => __( 'Save & Activate' ),
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '4.3-beta2-33279';
|
$wp_version = '4.3-beta2-33280';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue