Changeset 56651
- Timestamp:
- 09/21/2023 04:35:30 PM (15 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/media.php
r56612 r56651 5626 5626 global $wp_query; 5627 5627 5628 /** 5629 * Filters whether to short-circuit loading optimization attributes. 5630 * 5631 * Returning an array from the filter will effectively short-circuit the loading of optimization attributes, 5632 * returning that value instead. 5633 * 5634 * @since 6.4.0 5635 * 5636 * @param array|false $loading_attrs False by default, or array of loading optimization attributes to short-circuit. 5637 * @param string $tag_name The tag name. 5638 * @param array $attr Array of the attributes for the tag. 5639 * @param string $context Context for the element for which the loading optimization attribute is requested. 5640 */ 5641 $loading_attrs = apply_filters( 'pre_wp_get_loading_optimization_attributes', false, $tag_name, $attr, $context ); 5642 5643 if ( is_array( $loading_attrs ) ) { 5644 return $loading_attrs; 5645 } 5646 5628 5647 $loading_attrs = array(); 5629 5648 … … 5633 5652 */ 5634 5653 if ( 'template' === $context ) { 5635 return $loading_attrs; 5654 /** This filter is documented in wp-includes/media.php */ 5655 return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context ); 5636 5656 } 5637 5657 5638 5658 // For now this function only supports images and iframes. 5639 5659 if ( 'img' !== $tag_name && 'iframe' !== $tag_name ) { 5640 return $loading_attrs; 5660 /** This filter is documented in wp-includes/media.php */ 5661 return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context ); 5641 5662 } 5642 5663 5643 5664 // For any resources, width and height must be provided, to avoid layout shifts. 5644 5665 if ( ! isset( $attr['width'], $attr['height'] ) ) { 5645 return $loading_attrs; 5666 /** This filter is documented in wp-includes/media.php */ 5667 return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context ); 5646 5668 } 5647 5669 … … 5655 5677 // TODO: Handle shortcode images together with the content (see https://core.trac.wordpress.org/ticket/58853). 5656 5678 if ( 'the_content' !== $context && 'do_shortcode' !== $context && doing_filter( 'the_content' ) ) { 5657 return $loading_attrs; 5679 /** This filter is documented in wp-includes/media.php */ 5680 return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context ); 5658 5681 } 5659 5682 … … 5790 5813 } 5791 5814 5792 return $loading_attrs; 5815 /** 5816 * Filters the loading optimization attributes. 5817 * 5818 * @since 6.4.0 5819 * 5820 * @param array $loading_attrs The loading optimization attributes. 5821 * @param string $tag_name The tag name. 5822 * @param array $attr Array of the attributes for the tag. 5823 * @param string $context Context for the element for which the loading optimization attribute is requested. 5824 */ 5825 return apply_filters( 'wp_get_loading_optimization_attributes', $loading_attrs, $tag_name, $attr, $context ); 5793 5826 } 5794 5827 -
trunk/tests/phpunit/tests/media.php
r56616 r56651 5442 5442 5443 5443 /** 5444 * Tests for pre_wp_get_loading_optimization_attributes filter. 5445 * 5446 * @ticket 58893 5447 */ 5448 public function test_pre_wp_get_loading_optimization_attributes_filter() { 5449 add_filter( 5450 'pre_wp_get_loading_optimization_attributes', 5451 static function ( $loading_attrs ) { 5452 if ( false === $loading_attrs ) { 5453 // Initialize as an empty array. 5454 $loading_attrs = array(); 5455 } 5456 $loading_attrs['fetchpriority'] = 'high'; 5457 5458 return $loading_attrs; 5459 }, 5460 10, 5461 1 5462 ); 5463 5464 $attr = $this->get_width_height_for_high_priority(); 5465 5466 $this->assertSame( 5467 array( 'fetchpriority' => 'high' ), 5468 wp_get_loading_optimization_attributes( 'img', $attr, 'the_content' ), 5469 'The filter did not return early fetchpriority attribute' 5470 ); 5471 5472 // Clean up the filter. 5473 add_filter( 'pre_wp_get_loading_optimization_attributes', '__return_false' ); 5474 5475 $this->assertSameSets( 5476 array( 'loading' => 'lazy' ), 5477 wp_get_loading_optimization_attributes( 'img', $attr, 'the_content' ), 5478 'The filter did not return the default attributes.' 5479 ); 5480 5481 // Return no loading attributes. 5482 add_filter( 'pre_wp_get_loading_optimization_attributes', '__return_empty_array' ); 5483 5484 $this->assertSameSets( 5485 array(), 5486 wp_get_loading_optimization_attributes( 'img', $attr, 'the_content' ), 5487 'The filter did not clean up all attributes.' 5488 ); 5489 5490 // Modify the loading attributes with any custom attributes. 5491 add_filter( 5492 'pre_wp_get_loading_optimization_attributes', 5493 static function ( $loading_attrs ) { 5494 if ( false === $loading_attrs ) { 5495 // Initialize as an empty array. 5496 $loading_attrs = array(); 5497 } 5498 $loading_attrs['custom_attr'] = 'custom_value'; 5499 5500 return $loading_attrs; 5501 }, 5502 10, 5503 1 5504 ); 5505 5506 $this->assertSameSets( 5507 array( 'custom_attr' => 'custom_value' ), 5508 wp_get_loading_optimization_attributes( 'img', $attr, 'the_content' ), 5509 'The filter did not return custom attributes.' 5510 ); 5511 } 5512 5513 /** 5514 * Tests for wp_get_loading_optimization_attributes filter. 5515 * 5516 * @ticket 58893 5517 */ 5518 public function test_wp_get_loading_optimization_attributes_filter() { 5519 $attr = $this->get_width_height_for_high_priority(); 5520 5521 $this->assertSameSets( 5522 array( 'loading' => 'lazy' ), 5523 wp_get_loading_optimization_attributes( 'img', $attr, 'the_content' ), 5524 'Before the filter it will not return the loading attribute.' 5525 ); 5526 5527 add_filter( 5528 'wp_get_loading_optimization_attributes', 5529 static function ( $loading_attrs ) { 5530 unset( $loading_attrs['loading'] ); 5531 $loading_attrs['fetchpriority'] = 'high'; 5532 5533 return $loading_attrs; 5534 }, 5535 10, 5536 1 5537 ); 5538 5539 $this->assertSameSets( 5540 array( 'fetchpriority' => 'high' ), 5541 wp_get_loading_optimization_attributes( 'img', $attr, 'the_content' ), 5542 'After the filter it will not return the fetchpriority attribute.' 5543 ); 5544 } 5545 5546 /** 5444 5547 * Helper method to keep track of the last context returned by the 'wp_get_attachment_image_context' filter. 5445 5548 *
Note: See TracChangeset
for help on using the changeset viewer.