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.