diff --git a/src/wp-admin/includes/media.php b/src/wp-admin/includes/media.php index 40e394a32b..2a7d6b5ab3 100644 --- a/src/wp-admin/includes/media.php +++ b/src/wp-admin/includes/media.php @@ -280,7 +280,7 @@ function media_handle_upload($file_id, $post_id, $post_data = array(), $override $url = $file['url']; $type = $file['type']; $file = $file['file']; - $title = sanitize_title( $name ); + $title = sanitize_text_field( $name ); $content = ''; $excerpt = ''; diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index 68ac7eebc8..b8d8203a33 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -585,6 +585,37 @@ VIDEO; $this->assertEquals( 'This is a comment. / Это комментарий. / Βλέπετε ένα σχόλιο.', $post->post_excerpt ); } + /** + * @ticket 37989 + */ + public function test_media_handle_upload_expected_titles() { + $test_file = DIR_TESTDATA . '/images/test-image.jpg'; + + // Make a copy of this file as it gets moved during the file upload + $tmp_name = wp_tempnam( $test_file ); + + copy( $test_file, $tmp_name ); + + $_FILES['upload'] = array( + 'tmp_name' => $tmp_name, + 'name' => 'This is a test.jpg', + 'type' => 'image/jpeg', + 'error' => 0, + 'size' => filesize( $test_file ), + ); + + $post_id = media_handle_upload( 'upload', 0, array(), array( 'action' => 'test_upload_titles', 'test_form' => false ) ); + + unset( $_FILES['upload'] ); + + $post = get_post( $post_id ); + + // Clean up. + wp_delete_attachment( $post_id ); + + $this->assertEquals( 'This is a test', $post->post_title ); + } + /** * @ticket 33016 */