Make WordPress Core


Ignore:
Timestamp:
02/08/2021 11:20:56 PM (3 years ago)
Author:
antpb
Message:

Media: Allow post_date to be respected in media_handle_sideload().

Previously, date information was unable to be changed when using media_handle_sideload().

Now you can override the date for a media item using $post_data['post_date'] before using the function.

Props jamesgol, mukesh27, SergeyBiryukov, hellofromTonya, Mista-Flo.
Fixes #50972.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/media.php

    r49979 r50258  
    431431 * @since 5.3.0 The `$post_id` parameter was made optional.
    432432 *
    433  * @param array  $file_array Array that represents a `$_FILES` upload array.
    434  * @param int    $post_id    Optional. The post ID the media is associated with.
    435  * @param string $desc       Optional. Description of the side-loaded file. Default null.
    436  * @param array  $post_data  Optional. Post data to override. Default empty array.
     433 * @param string[]  $file_array Array that represents a `$_FILES` upload array.
     434 * @param int       $post_id    Optional. The post ID the media is associated with.
     435 * @param string    $desc       Optional. Description of the side-loaded file. Default null.
     436 * @param array     $post_data  Optional. Post data to override. Default empty array.
    437437 * @return int|WP_Error The ID of the attachment or a WP_Error on failure.
    438438 */
     
    440440    $overrides = array( 'test_form' => false );
    441441
    442     $time = current_time( 'mysql' );
    443     $post = get_post( $post_id );
    444 
    445     if ( $post ) {
    446         if ( substr( $post->post_date, 0, 4 ) > 0 ) {
     442    if ( isset( $post_data['post_date'] ) && substr( $post_data['post_date'], 0, 4 ) > 0 ) {
     443        $time = $post_data['post_date'];
     444    } else {
     445        $post = get_post( $post_id );
     446        if ( $post && substr( $post->post_date, 0, 4 ) > 0 ) {
    447447            $time = $post->post_date;
     448        } else {
     449            $time = current_time( 'mysql' );
    448450        }
    449451    }
Note: See TracChangeset for help on using the changeset viewer.