On this page
Custom_Image_Header::step_3()
Display third step of custom header image page.
Source
File: wp-admin/includes/class-custom-image-header.php. View all references
public function step_3() {
check_admin_referer( 'custom-header-crop-image' );
if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) {
wp_die(
'<h1>' . __( 'Something went wrong.' ) . '</h1>' .
'<p>' . __( 'The active theme does not support uploading a custom header image.' ) . '</p>',
403
);
}
if ( ! empty( $_POST['skip-cropping'] )
&& ! current_theme_supports( 'custom-header', 'flex-height' )
&& ! current_theme_supports( 'custom-header', 'flex-width' )
) {
wp_die(
'<h1>' . __( 'Something went wrong.' ) . '</h1>' .
'<p>' . __( 'The active theme does not support a flexible sized header image.' ) . '</p>',
403
);
}
if ( $_POST['oitar'] > 1 ) {
$_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
$_POST['y1'] = $_POST['y1'] * $_POST['oitar'];
$_POST['width'] = $_POST['width'] * $_POST['oitar'];
$_POST['height'] = $_POST['height'] * $_POST['oitar'];
}
$attachment_id = absint( $_POST['attachment_id'] );
$original = get_attached_file( $attachment_id );
$dimensions = $this->get_header_dimensions(
array(
'height' => $_POST['height'],
'width' => $_POST['width'],
)
);
$height = $dimensions['dst_height'];
$width = $dimensions['dst_width'];
if ( empty( $_POST['skip-cropping'] ) ) {
$cropped = wp_crop_image(
$attachment_id,
(int) $_POST['x1'],
(int) $_POST['y1'],
(int) $_POST['width'],
(int) $_POST['height'],
$width,
$height
);
} elseif ( ! empty( $_POST['create-new-attachment'] ) ) {
$cropped = _copy_image_file( $attachment_id );
} else {
$cropped = get_attached_file( $attachment_id );
}
if ( ! $cropped || is_wp_error( $cropped ) ) {
wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) );
}
/** 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 = $this->create_attachment_object( $cropped, $attachment_id );
if ( ! empty( $_POST['create-new-attachment'] ) ) {
unset( $attachment['ID'] );
}
// Update the attachment.
$attachment_id = $this->insert_attachment( $attachment, $cropped );
$url = wp_get_attachment_url( $attachment_id );
$this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) );
// Cleanup.
$medium = str_replace( wp_basename( $original ), 'midsize-' . wp_basename( $original ), $original );
if ( file_exists( $medium ) ) {
wp_delete_file( $medium );
}
if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) ) {
wp_delete_file( $original );
}
return $this->finished();
}
Hooks
- do_action( 'wp_create_file_in_uploads',
string $file ,int $attachment_id ) -
Fires after the header image is set or an error is returned.
Related
Uses
| Uses | Description |
|---|---|
| wp_delete_file() wp-includes/functions.php | Deletes a file. |
| wp_crop_image() wp-admin/includes/image.php | Crops an image to a given size. |
| Custom_Image_Header::get_header_dimensions() wp-admin/includes/class-custom-image-header.php | Calculate width and height based on what the currently selected theme supports. |
| Custom_Image_Header::create_attachment_object() wp-admin/includes/class-custom-image-header.php | Create an attachment ‘object’. |
| Custom_Image_Header::insert_attachment() wp-admin/includes/class-custom-image-header.php | Insert an attachment and its metadata. |
| Custom_Image_Header::set_header_image() wp-admin/includes/class-custom-image-header.php | Choose a header image, selected from existing uploaded and default headers, or provide an array of uploaded header data (either new, or from media library). |
| Custom_Image_Header::finished() wp-admin/includes/class-custom-image-header.php | Display last step of custom header image page. |
| get_attached_file() wp-includes/post.php | Retrieves attached file path based on attachment ID. |
| _copy_image_file() wp-admin/includes/image.php | Copies an existing image file. |
| wp_get_attachment_url() wp-includes/post.php | Retrieves the URL for an attachment. |
| check_admin_referer() wp-includes/pluggable.php | Ensures intent by verifying that a user was referred from another admin page with the correct security nonce. |
| apply_filters() wp-includes/plugin.php | Calls the callback functions that have been added to a filter hook. |
| __() wp-includes/l10n.php | Retrieves the translation of $text. |
| wp_die() wp-includes/functions.php | Kills WordPress execution and displays HTML page with an error message. |
| absint() wp-includes/functions.php | Converts a value to non-negative integer. |
| wp_basename() wp-includes/formatting.php | i18n-friendly version of basename(). |
| current_theme_supports() wp-includes/theme.php | Checks a theme’s support for a given feature. |
| is_wp_error() wp-includes/load.php | Checks whether the given variable is a WordPress Error. |
Used By
| Used By | Description |
|---|---|
| Custom_Image_Header::admin_page() wp-admin/includes/class-custom-image-header.php | Display the page based on the current step. |
Changelog
| Version | Description |
|---|---|
| 4.4.0 | Switched to using wp_get_attachment_url() instead of the guid for retrieving the header image URL. |
| 2.1.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/custom_image_header/step_3