diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php index 0fda61ab85..575a2fbaea 100644 --- a/src/wp-includes/post.php +++ b/src/wp-includes/post.php @@ -5992,13 +5992,12 @@ function wp_delete_attachment_files( $post_id, $meta, $backup_sizes, $file ) { function wp_get_attachment_metadata( $attachment_id = 0, $unfiltered = false ) { $attachment_id = (int) $attachment_id; - $post = get_post( $attachment_id ); - if ( ! $post ) { + $data = get_post_meta( $attachment_id, '_wp_attachment_metadata', true ); + + if ( empty( $data ) ) { return false; } - $data = get_post_meta( $post->ID, '_wp_attachment_metadata', true ); - if ( $unfiltered ) { return $data; } @@ -6012,7 +6011,7 @@ function wp_get_attachment_metadata( $attachment_id = 0, $unfiltered = false ) { * if the object does not exist. * @param int $attachment_id Attachment post ID. */ - return apply_filters( 'wp_get_attachment_metadata', $data, $post->ID ); + return apply_filters( 'wp_get_attachment_metadata', $data, $attachment_id ); } /** diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index 4c5c65444f..366859a8a9 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -2387,6 +2387,15 @@ EOF; return $data; } + /** + * @ticket 50679 + */ + function test_wp_get_attachment_metadata_should_return_false_if_no_attachment() { + $post_id = self::factory()->post->create(); + $data = wp_get_attachment_metadata( $post_id ); + $this->assertFalse( $data ); + } + /** * @ticket 37813 */