Отключение запросов с сервера к YouTube (oembed) в WordPress

При переносе сайта с зарубежного хостинга заметил, что страницы грузятся очень долго, хотя сервер более свежий.

Оказалось, что при встраивании видео с YouTube через embed или через плагин ACF 7 на стороне сервера делается запрос вида

А т.к. YouTube замедляется, то запрос падает по таймауту (5с) и отрисовка страницы идет очень долго. Удалить видео со страниц нет возможности, поэтому нужно было найти другое решение.

Просто удаление провайдеров из oembed и отключение embed_oembed_discover не помогает и если проследить по стеку вызовов — acf вызывает wp_oembed_get($url, $args), где в $args передаются только width и height. А нужно туда передать [‘discover’=> false].

Далее проследив по стеку вызовов выясняю, что нигде нет хуков, где можно было бы подменить аргумент discover, вплоть до момента самого запроса через WP_Http::request().

Благо, внутри request есть хук pre_http_request, через который можно перехватить запрос и в ответ прислать заглушку, что и решило вопрос.

Код для встраивания в код темы в файл functions.php


Добавить комментарий

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

*
*