WP_RESOURCE_HINTS() – функция добавления подсказок для ускорения загрузки ресурсов в WordPress 4.6.0

WP_RESOURCE_HINTS() │ WP 4.6.0

Функция wp_resource_hints() добавляет подсказки для браузеров, которые позволяют заранее загружать ресурсы, такие как страницы и изображения, чтобы ускорить их отображение.

Зачем нужны подсказки?

Эти подсказки помогают браузерам:

  • Предварительно загружать страницы или ресурсы.
  • Начинать соединение с другими сайтами, например, выполняя поиск DNS (преобразование домена в IP-адрес).
  • Ускорять рендеринг страниц, загружая ресурсы в фоновом режиме.

Подсказки реализуются с помощью тега <link rel="…">.

Примеры использования

wp_resource_hints();

Хуки функции

Функция использует хук wp_resource_hints, который позволяет изменять или добавлять подсказки.

Возвращаемое значение

Функция возвращает null, что означает, что ничего не выводится, если не добавлены подсказки.


Примеры

Пример 1: Отключение предварительной загрузки DNS для s.w.org (Emoji)

С версии 4.6.0 можно отключить предварительную загрузку для сервиса эмодзи:

// Убираем предварительную загрузку DNS для эмодзи из заголовка
add_filter( 'emoji_svg_url', '__return_false' );

Пример 2: Добавление инструкций для пользовательских URL (доменов)

Можно добавить инструкции для определенных URL или доменов, используя хук wp_resource_hints:

add_filter( 'wp_resource_hints', 'wp_kama_resource_hints_filter', 10, 2 );

/**
 * Функция для фильтра wp_resource_hints.
 *
 * @param array  $urls          Массив ресурсов и их атрибутов.
 * @param string $relation_type Тип отношения для указанных URL (например, 'preconnect' или 'prerender').
 *
 * @return array Массив с модифицированными URL.
 */
function wp_kama_resource_hints_filter( $urls, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        $urls[] = 'https://dnsprefetch.com/foo';
    }

    if ( 'preconnect' === $relation_type ) {
        $urls[] = 'https://preconnect.com/some';
    }

    if ( 'prefetch' === $relation_type ) {
        $urls[] = 'https://prefetch.com/some';
        $urls[] = '//prefetch-no-proto.com/some';
        $urls[] = [
            'href'        => 'https://prerender-array.com/some.css',
            'as'          => 'style',
            'crossorigin' => 'use-credentials',
            'pr'          => 12.5,
            'type'        => 'text/css',
        ];
    }

    if ( 'prerender' === $relation_type ) {
        $urls[] = 'https://prerender.com/some';
    }

    return $urls;
}

При использовании этой функции в заголовке HTML появятся следующие строки:






Пример 3: Удаление правил DNS-предварительной загрузки из заголовка HTML

Если нужно убрать некоторые правила предварительной загрузки, например, для домена external.com, можно сделать это так:

add_filter( 'wp_resource_hints', function( $urls ) {
    foreach ( $urls as $key => $url ) {
        if ( str_contains( $url, 'external.com' ) ) {
            unset( $urls[ $key ] );
        }
    }
    return $urls;
} );

Изменения

  • С версии 4.6.0 функция была введена в WordPress.
function wp_resource_hints() {
    // инициализация подсказок
    $hints = array(
        'dns-prefetch' => wp_dependencies_unique_hosts(),
        'preconnect'   => array(),
        'prefetch'     => array(),
        'prerender'    => array(),
    );

    // Обработка подсказок
    foreach ( $hints as $relation_type => $urls ) {
        // ... логика обработки
    }
}

Связанные функции

Если вам нужно работать с подключаемыми скриптами и стилями, смотрите следующие функции:

  • add_editor_style()
  • wp_enqueue_script()
  • wp_enqueue_style()
  • wp_dequeue_script()
  • и другие.

Эти функции помогут управлять ресурсами и стилями на вашем сайте WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *