wp_maybe_add_fetchpriority_high_attr

The timeline below displays how wordpress function wp_maybe_add_fetchpriority_high_attr has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Determines whether to add `fetchpriority='high'` to loading attributes.
 *
 * @since 6.3.0
 * @access private
 *
 * @param array  $loading_attrs Array of the loading optimization attributes for the element.
 * @param string $tag_name      The tag name.
 * @param array  $attr          Array of the attributes for the element.
 * @return array Updated loading optimization attributes for the element.
 */
function wp_maybe_add_fetchpriority_high_attr($loading_attrs, $tag_name, $attr)
{
    // For now, adding `fetchpriority="high"` is only supported for images.
    if ('img' !== $tag_name) {
        return $loading_attrs;
    }
    if (isset($attr['fetchpriority'])) {
        /*
         * While any `fetchpriority` value could be set in `$loading_attrs`,
         * for consistency we only do it for `fetchpriority="high"` since that
         * is the only possible value that WordPress core would apply on its
         * own.
         */
        if ('high' === $attr['fetchpriority']) {
            $loading_attrs['fetchpriority'] = 'high';
            wp_high_priority_element_flag(false);
        }
        return $loading_attrs;
    }
    // Lazy-loading and `fetchpriority="high"` are mutually exclusive.
    if (isset($loading_attrs['loading']) && 'lazy' === $loading_attrs['loading']) {
        return $loading_attrs;
    }
    if (!wp_high_priority_element_flag()) {
        return $loading_attrs;
    }
    /**
     * Filters the minimum square-pixels threshold for an image to be eligible as the high-priority image.
     *
     * @since 6.3.0
     *
     * @param int $threshold Minimum square-pixels threshold. Default 50000.
     */
    $wp_min_priority_img_pixels = apply_filters('wp_min_priority_img_pixels', 50000);
    if ($wp_min_priority_img_pixels <= $attr['width'] * $attr['height']) {
        $loading_attrs['fetchpriority'] = 'high';
        wp_high_priority_element_flag(false);
    }
    return $loading_attrs;
}