diff --git a/src/wp-includes/class-wp-oembed.php b/src/wp-includes/class-wp-oembed.php
index 91f9cd68be..55bfccb310 100644
|
a
|
b
|
class WP_oEmbed { |
| 414 | 414 | return false; |
| 415 | 415 | } |
| 416 | 416 | |
| | 417 | // Lazy load oEmbed iframes. |
| | 418 | if ( wp_lazy_loading_enabled( 'iframe', 'oembed' ) && isset( $data->html ) && str_starts_with( $data->html, '<iframe' ) && ! str_contains( $data->html, 'loading' ) ) { |
| | 419 | $data->html = wp_iframe_tag_add_loading_attr( $data->html, 'oembed' ); |
| | 420 | } |
| | 421 | |
| 417 | 422 | /** |
| 418 | 423 | * Filters the HTML returned by the oEmbed provider. |
| 419 | 424 | * |
diff --git a/tests/phpunit/tests/oembed/controller.php b/tests/phpunit/tests/oembed/controller.php
index 238b1faf1f..a067d118d6 100644
|
a
|
b
|
class Test_oEmbed_Controller extends WP_UnitTestCase { |
| 813 | 813 | |
| 814 | 814 | $this->assertStringStartsWith( '<b>Unfiltered</b>', $data->html ); |
| 815 | 815 | } |
| | 816 | |
| | 817 | /** |
| | 818 | * Test that oembed iframes are lazy loaded by default. |
| | 819 | */ |
| | 820 | public function test_oembed_iframes_are_lazy_loaded_by_default() { |
| | 821 | wp_set_current_user( self::$editor ); |
| | 822 | $post = self::factory()->post->create_and_get( |
| | 823 | array( |
| | 824 | 'post_author' => self::$editor, |
| | 825 | 'post_title' => 'Hello World', |
| | 826 | 'post_content' => 'https://www.youtube.com/watch?v=' . self::YOUTUBE_VIDEO_ID, |
| | 827 | ) |
| | 828 | ); |
| | 829 | |
| | 830 | // Get the post content via the REST API. |
| | 831 | $request = new WP_REST_Request( 'GET', '/wp/v2/posts/' . $post->ID ); |
| | 832 | $request->set_param( '_embed', true ); |
| | 833 | $response = rest_get_server()->dispatch( $request ); |
| | 834 | $data = $response->get_data(); |
| | 835 | |
| | 836 | $this->assertIsArray( $data ); |
| | 837 | $this->assertStringContainsString( 'loading="lazy"', $data['content']['rendered'] ); |
| | 838 | } |
| 816 | 839 | } |