diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php index 4f1eed831f..c25ac99ed9 100644 --- a/src/wp-includes/media.php +++ b/src/wp-includes/media.php @@ -2250,7 +2250,16 @@ function gallery_shortcode( $attr ) { if ( is_feed() ) { $output = "\n"; foreach ( $attachments as $att_id => $attachment ) { - $output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n"; + if ( ! empty( $atts['link'] ) ) { + if ( 'none' === $atts['link'] ) { + $output .= wp_get_attachment_image( $att_id, $atts['size'], false, $attr ); + } else { + $output .= wp_get_attachment_link( $att_id, $atts['size'], false ); + } + } else { + $output .= wp_get_attachment_link( $att_id, $atts['size'], true ); + } + $output .= "\n"; } return $output; } diff --git a/tests/phpunit/tests/media.php b/tests/phpunit/tests/media.php index 14794a90e1..e5fd11dadc 100644 --- a/tests/phpunit/tests/media.php +++ b/tests/phpunit/tests/media.php @@ -2946,6 +2946,41 @@ EOF; $this->assertTrue( wp_image_file_matches_image_meta( $image_src, $image_meta ) ); } + + /** + * @ticket 22101 + */ + function test_gallery_shortcode_when_is_feed_true() { + + $this->go_to( '/?feed=rss2' ); + + // Default: Links to image attachment page url + $actual = gallery_shortcode( + array( + 'ids' => self::$large_id, + ) + ); + $this->assertContains( '?attachment_id=', $actual ); + + // File: Links to image file url + $actual = gallery_shortcode( + array( + 'ids' => self::$large_id, + 'link' => 'file', + ) + ); + $this->assertTrue( 2 === substr_count( $actual, '.jpg' ) ); + + // None: Does not link + $actual = gallery_shortcode( + array( + 'ids' => self::$large_id, + 'link' => 'none', + ) + ); + $this->assertFalse( strpos( $actual, '