wp_ajax_media_create_image_subsizes

The timeline below displays how wordpress function wp_ajax_media_create_image_subsizes has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Handles creating missing image sub-sizes for just uploaded images via AJAX.
 *
 * @since 5.3.0
 */
function wp_ajax_media_create_image_subsizes()
{
    check_ajax_referer('media-form');
    if (!current_user_can('upload_files')) {
        wp_send_json_error(array('message' => __('Sorry, you are not allowed to upload files.')));
    }
    if (empty($_POST['attachment_id'])) {
        wp_send_json_error(array('message' => __('Upload failed. Please reload and try again.')));
    }
    $attachment_id = (int) $_POST['attachment_id'];
    if (!empty($_POST['_wp_upload_failed_cleanup'])) {
        // Upload failed. Cleanup.
        if (wp_attachment_is_image($attachment_id) && current_user_can('delete_post', $attachment_id)) {
            $attachment = get_post($attachment_id);
            // Created at most 10 min ago.
            if ($attachment && time() - strtotime($attachment->post_date_gmt) < 600) {
                wp_delete_attachment($attachment_id, true);
                wp_send_json_success();
            }
        }
    }
    /*
     * Set a custom header with the attachment_id.
     * Used by the browser/client to resume creating image sub-sizes after a PHP fatal error.
     */
    if (!headers_sent()) {
        header('X-WP-Upload-Attachment-ID: ' . $attachment_id);
    }
    /*
     * This can still be pretty slow and cause timeout or out of memory errors.
     * The js that handles the response would need to also handle HTTP 500 errors.
     */
    wp_update_image_subsizes($attachment_id);
    if (!empty($_POST['_legacy_support'])) {
        // The old (inline) uploader. Only needs the attachment_id.
        $response = array('id' => $attachment_id);
    } else {
        // Media modal and Media Library grid view.
        $response = wp_prepare_attachment_for_js($attachment_id);
        if (!$response) {
            wp_send_json_error(array('message' => __('Upload failed.')));
        }
    }
    // At this point the image has been uploaded successfully.
    wp_send_json_success($response);
}

WordPress Version: 5.3

/**
 * Ajax handler for creating missing image sub-sizes for just uploaded images.
 *
 * @since 5.3.0
 */
function wp_ajax_media_create_image_subsizes()
{
    check_ajax_referer('media-form');
    if (!current_user_can('upload_files')) {
        wp_send_json_error(array('message' => __('Sorry, you are not allowed to upload files.')));
    }
    if (empty($_POST['attachment_id'])) {
        wp_send_json_error(array('message' => __('Upload failed. Please reload and try again.')));
    }
    $attachment_id = (int) $_POST['attachment_id'];
    if (!empty($_POST['_wp_upload_failed_cleanup'])) {
        // Upload failed. Cleanup.
        if (wp_attachment_is_image($attachment_id) && current_user_can('delete_post', $attachment_id)) {
            $attachment = get_post($attachment_id);
            // Created at most 10 min ago.
            if ($attachment && time() - strtotime($attachment->post_date_gmt) < 600) {
                wp_delete_attachment($attachment_id, true);
                wp_send_json_success();
            }
        }
    }
    // Set a custom header with the attachment_id.
    // Used by the browser/client to resume creating image sub-sizes after a PHP fatal error.
    if (!headers_sent()) {
        header('X-WP-Upload-Attachment-ID: ' . $attachment_id);
    }
    // This can still be pretty slow and cause timeout or out of memory errors.
    // The js that handles the response would need to also handle HTTP 500 errors.
    wp_update_image_subsizes($attachment_id);
    if (!empty($_POST['_legacy_support'])) {
        // The old (inline) uploader. Only needs the attachment_id.
        $response = array('id' => $attachment_id);
    } else {
        // Media modal and Media Library grid view.
        $response = wp_prepare_attachment_for_js($attachment_id);
        if (!$response) {
            wp_send_json_error(array('message' => __('Upload failed.')));
        }
    }
    // At this point the image has been uploaded successfully.
    wp_send_json_success($response);
}