media_handle_sideload() – Handles a side-loaded file in the same way as an uploaded file is handled by media_handle_upload().

You appear to be a bot. Output may be restricted

Description

Handles a side-loaded file in the same way as an uploaded file is handled by media_handle_upload().

Usage

$int|WP_Error = media_handle_sideload( $file_array, $post_id, $desc, $post_data );

Parameters

$file_array
( string[] ) required – Array that represents a $_FILES upload array.
$post_id
( int ) optional – Optional. The post ID the media is associated with.
$desc
( string ) optional – Optional. Description of the side-loaded file. Default null.
$post_data
( array ) optional – Optional. Post data to override. Default empty array.

Returns

int|WP_Error The ID of the attachment or a WP_Error on failure.

Source

File name: wordpress/wp-admin/includes/media.php
Lines:

1 to 67 of 67
function media_handle_sideload( $file_array, $post_id = 0, $desc = null, $post_data = array() ) {
  $overrides = array( 'test_form' => false );

  if ( isset( $post_data['post_date'] ) && substr( $post_data['post_date'], 0, 4 ) > 0 ) {
    $time = $post_data['post_date'];
  } else {
    $post = get_post( $post_id );
    if ( $post && substr( $post->post_date, 0, 4 ) > 0 ) {
      $time = $post->post_date;
    } else {
      $time = current_time( 'mysql' );
    }
  }

  $file = wp_handle_sideload( $file_array, $overrides, $time );

  if ( isset( $file['error'] ) ) {
    return new WP_Error( 'upload_error', $file['error'] );
  }

  $url     = $file['url'];
  $type    = $file['type'];
  $file    = $file['file'];
  $title   = preg_replace( '/\.[^.]+$/', '', wp_basename( $file ) );
  $content = '';

  // Use image exif/iptc data for title and caption defaults if possible.
  $image_meta = wp_read_image_metadata( $file );

  if ( $image_meta ) {
    if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {
      $title = $image_meta['title'];
    }

    if ( trim( $image_meta['caption'] ) ) {
      $content = $image_meta['caption'];
    }
  }

  if ( isset( $desc ) ) {
    $title = $desc;
  }

  // Construct the attachment array.
  $attachment = array_merge(
    array(
      'post_mime_type' => $type,
      'guid'           => $url,
      'post_parent'    => $post_id,
      'post_title'     => $title,
      'post_content'   => $content,
    ),
    $post_data
  );

  // This should never be set as it would then overwrite an existing attachment.
  unset( $attachment['ID'] );

  // Save the attachment metadata.
  $attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true );

  if ( ! is_wp_error( $attachment_id ) ) {
    wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );
  }

  return $attachment_id;
}
 

 View on GitHub View on Trac