wp_preload_resources
函数
wp_preload_resources ( No parameters )
- 定义位置
-
-
wp-includes/general-template.php
, line 3583
-
wp-includes/general-template.php
- 引入
- 6.1.0
- 弃用
- –
Prints resource preloads directives to browsers.
Gives directive to browsers to preload specific resources that website will
need very soon, this ensures that they are available earlier and are less
likely to block the page’s render. Preload directives should not be used for
non-render-blocking elements, as then they would compete with the
render-blocking ones, slowing down the render.
These performance improving indicators work by using “.
function wp_preload_resources() { /** * Filters domains and URLs for resource preloads. * * @since 6.1.0 * * @param array $preload_resources { * Array of resources and their attributes, or URLs to print for resource preloads. * * @type array ...$0 { * Array of resource attributes. * * @type string $href URL to include in resource preloads. Required. * @type string $as How the browser should treat the resource * (`script`, `style`, `image`, `document`, etc). * @type string $crossorigin Indicates the CORS policy of the specified resource. * @type string $type Type of the resource (`text/html`, `text/css`, etc). * @type string $media Accepts media types or media queries. Allows responsive preloading. * @type string $imagesizes Responsive source size to the source Set. * @type string $imagesrcset Responsive image sources to the source set. * } * } */ $preload_resources = apply_filters( 'wp_preload_resources', array() ); if ( ! is_array( $preload_resources ) ) { return; } $unique_resources = array(); // Parse the complete resource list and extract unique resources. foreach ( $preload_resources as $resource ) { if ( ! is_array( $resource ) ) { continue; } $attributes = $resource; if ( isset( $resource['href'] ) ) { $href = $resource['href']; if ( isset( $unique_resources[ $href ] ) ) { continue; } $unique_resources[ $href ] = $attributes; // Media can use imagesrcset and not href. } elseif ( ( 'image' === $resource['as'] ) && ( isset( $resource['imagesrcset'] ) || isset( $resource['imagesizes'] ) ) ) { if ( isset( $unique_resources[ $resource['imagesrcset'] ] ) ) { continue; } $unique_resources[ $resource['imagesrcset'] ] = $attributes; } else { continue; } } // Build and output the HTML for each unique resource. foreach ( $unique_resources as $unique_resource ) { $html = ''; foreach ( $unique_resource as $resource_key => $resource_value ) { if ( ! is_scalar( $resource_value ) ) { continue; } // Ignore non-supported attributes. $non_supported_attributes = array( 'as', 'crossorigin', 'href', 'imagesrcset', 'imagesizes', 'type', 'media' ); if ( ! in_array( $resource_key, $non_supported_attributes, true ) && ! is_numeric( $resource_key ) ) { continue; } // imagesrcset only usable when preloading image, ignore otherwise. if ( ( 'imagesrcset' === $resource_key ) && ( ! isset( $unique_resource['as'] ) || ( 'image' !== $unique_resource['as'] ) ) ) { continue; } // imagesizes only usable when preloading image and imagesrcset present, ignore otherwise. if ( ( 'imagesizes' === $resource_key ) && ( ! isset( $unique_resource['as'] ) || ( 'image' !== $unique_resource['as'] ) || ! isset( $unique_resource['imagesrcset'] ) ) ) { continue; } $resource_value = ( 'href' === $resource_key ) ? esc_url( $resource_value, array( 'http', 'https' ) ) : esc_attr( $resource_value ); if ( ! is_string( $resource_key ) ) { $html .= " $resource_value"; } else { $html .= " $resource_key='$resource_value'"; } } $html = trim( $html ); printf( "n", $html ); } }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。