Make WordPress Core

Changeset 43529


Ignore:
Timestamp:
07/24/2018 04:51:09 PM (8 years ago)
Author:
SergeyBiryukov
Message:

REST API: Ensure attachments created with WP_REST_Attachments_Controller::create_item() on Windows have a relative path.

Props ocean90, SergeyBiryukov, redcastor.
Fixes #40861.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php

    r43462 r43529  
    137137
    138138                $attachment                 = $this->prepare_item_for_database( $request );
    139                 $attachment->file           = $file;
    140139                $attachment->post_mime_type = $type;
    141140                $attachment->guid           = $url;
     
    145144                }
    146145
    147                 $id = wp_insert_post( wp_slash( (array) $attachment ), true );
     146                // $post_parent is inherited from $attachment['post_parent'].
     147                $id = wp_insert_attachment( wp_slash( (array) $attachment ), $file, 0, true );
    148148
    149149                if ( is_wp_error( $id ) ) {
  • trunk/tests/phpunit/tests/rest-api/rest-attachments-controller.php

    r43462 r43529  
    772772                $attachment = $response->get_data();
    773773                $this->assertEquals( '', $attachment['alt_text'] );
     774        }
     775
     776        /**
     777         * @ticket 40861
     778         */
     779        public function test_create_item_ensure_relative_path() {
     780                wp_set_current_user( self::$author_id );
     781                $request = new WP_REST_Request( 'POST', '/wp/v2/media' );
     782                $request->set_header( 'Content-Type', 'image/jpeg' );
     783                $request->set_header( 'Content-Disposition', 'attachment; filename=canola.jpg' );
     784                $request->set_body( file_get_contents( $this->test_file ) );
     785                $response   = rest_get_server()->dispatch( $request );
     786                $attachment = $response->get_data();
     787                $this->assertNotContains( ABSPATH, get_post_meta( $attachment['id'], '_wp_attached_file', true ) );
    774788        }
    775789
Note: See TracChangeset for help on using the changeset viewer.