From 150d9bd17e99857cf24fa6f0139b2e76ba6761ad Mon Sep 17 00:00:00 2001 From: Helen Hou-Sandi Date: Thu, 1 Oct 2020 17:53:38 +0000 Subject: [PATCH] Media: Don't unnecessarily check for a valid attachment before getting meta. This makes `wp_get_attachment_metadata()` run significantly faster. See ticket for benchmarking. Props Tkama, donmhico. Fixes #50679. git-svn-id: https://develop.svn.wordpress.org/trunk@49084 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/post.php | 9 ++++----- tests/phpunit/tests/media.php | 9 +++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) 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 */