Custom_Background::handle_upload() – Handle an Image upload for the background image.

You appear to be a bot. Output may be restricted

Description

Handle an Image upload for the background image.

Usage

Custom_Background::handle_upload();

Parameters

Returns

void

Source

File name: wordpress/wp-admin/includes/class-custom-background.php


Lines:

1 to 53 of 53
  public function handle_upload() {
    if ( empty( $_FILES ) ) {
      return;
    }

    check_admin_referer( 'custom-background-upload', '_wpnonce-custom-background-upload' );

    $overrides = array( 'test_form' => false );

    $uploaded_file = $_FILES['import'];
    $wp_filetype   = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'] );
    if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) ) {
      wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) );
    }

    $file = wp_handle_upload( $uploaded_file, $overrides );

    if ( isset( $file['error'] ) ) {
      wp_die( $file['error'] );
    }

    $url      = $file['url'];
    $type     = $file['type'];
    $file     = $file['file'];
    $filename = wp_basename( $file );

    // Construct the attachment array.
    $attachment = array(
      'post_title'     => $filename,
      'post_content'   => $url,
      'post_mime_type' => $type,
      'guid'           => $url,
      'context'        => 'custom-background',
    );

    // Save the data.
    $id = wp_insert_attachment( $attachment, $file );

    // Add the metadata.
    wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
    update_post_meta( $id, '_wp_attachment_is_custom_background', get_option( 'stylesheet' ) );

    set_theme_mod( 'background_image', esc_url_raw( $url ) );

    $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
    set_theme_mod( 'background_image_thumb', esc_url_raw( $thumbnail[0] ) );

    
/** This action is documented in wp-admin/includes/class-custom-image-header.php */
    do_action( 'wp_create_file_in_uploads', $file, $id ); // For replication.
    $this->updated = true;
  }
 

 View on GitHub View on Trac