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

Оказалось, что при встраивании видео с 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


Когда работаете с WordPress Toolset плагином и создаете таксономии, то можете столкнуться с невозможностью поставить public параметр в false, что скрывает архив таксономии с сайта.


В форме комментирования WordPress не всегда нужно, чтобы поле комментария было обязательным. Однако, через панель администратора это ограничение не снять. На помощь нам приходят хуки (а не исправление исходного кода файлов движка, как советуют некоторые статьи, потом приходит новый разработчик, делает, как полагается, обновление движка и плагинов и функционал перестает работать).

При попытке отправить комментарий без текста комментария получаем следующую ошибку


Работая с WooCommerce можете столкнуться с тем, что ко всем ссылкам сайта добавляется параметр ?v=1ed1c408a4ac или любой другой случайный набор символов.