Предыстория
В одном из моих проектов понадобилось оптимизировать работу сайта и уменьшить скорость загрузки веб-страницы. На практике, в WordPress под это дело реализованы сотни плагинов: платные, бесплатные, хорошие и не понятно какие.
Основная проблема большинства из них в функциональной нагрузке. Если вы пытаетесь подключить CDN и только, то вам нет необходимости подключать тяжелый плагин с функциями кеширования\сжатия изображения\honey-pot-а\дополнительным редактором css (и такое бывает).
Нам не нужен лишний код, верно?
Попробовав около 10 разных, решил поэкспериментировать: написать мини-плагин оптимизатор.
Почему плагин?
Конечно, вы можете редактировать файл function.php из темы\дочерней темы. Но зачем?
Если редактировать файл темы — то при её обновлении, придется дописывать заново.
Или как было со мной, я просто забыл, что там был кусок кода, а потом удивлялся: "что же тут не так?".
Вы сами разработали тему — тогда стоит озадачиться этим вопросом внутри неё. Но в таком случае, вы вряд ли будете читать этот пост.
Для меня самый удобный вариант реализации — плагин. Его можно подключить, отключить, обновить — без каких-либо сложностей. К тому же его создание не является сверхсложной задачей даже для новичка. Плюс у меня мультисайт. Гораздо проще просто активировать плагин для всей сети и забыть.
Существует мнение, что изменения внесенные в function.php работают быстрее, чем подключенный плагин с тем-же функционалом. Правда это или нет — увы, я не знаю.
Но чисто визуально разницу не ощутил.
Мы напишем маленький плагин и посмотрим, как он влияет на скорость загрузки страницы.
Gzip сжатие сайта
Вкратце: сервер сжимает код сайта в архив и передает браузеру, который его распаковывает и показывает пользователю. Результат — размер сайта становится меньше.
Внимание! В некоторых случаях сжатие может быть уже включено на сервере.Как понять, что gzip отключен?
- Перейти на сайт
- Открыть панель разработчика
- Перезагрузить страницу
- Открыть вкладку "Сеть" (см. «Network»)
- Выбрать первый элемент списка с адресом сайта
- Далее "Заголовки" (см. «Headers») => "Заголовки запроса"
- Проверить состояние параметра "Accept-Encoding"

Если имеется параметр gzip — все классно, все работает.
На моем сайте, gzip не работал и я решил его включить. Существует несколько методов как это сделать, но я остановился на плагине.
Небольшой код:
## Включение сжатия сайта gzip
if( extension_loaded('zlib') && ini_get('output_handler') != 'ob_gzhandler' ){
add_action('wp', function(){ @ ob_end_clean(); @ ini_set('zlib.output_compression', 'on'); } );
}
Разбирать тут особо и нечего — код очень простой. Его я обернул в файл function.php, создал папку по пути /wp-content/plugins/ с названием плагина и заработало. Главное — чтобы на сервере имелась библиотека zlib.
Ограничение ревизий постов
Старая история — большое количество ревизий поста тормозит БД, сам пост, да и вообще негативно сказывается на производительности. В моем случае это более чем актуально.
Я построил мультисайтовую сеть. Да еще и с активными пользователями, администраторами и всяким таким.
Ограничить количество ревизий — будет не лишним. Небольшой хук:
if( ! defined('WP_POST_REVISIONS') ) define('WP_POST_REVISIONS', 5);
5 — это соответственно количество этих самых ревизий. Можно поставить 10, или как посчитаете удобным.
Какого-то «Вау»-эффекта от этого не последует, но поможет сохранить жизнь БД и избавит от дальнейших проблем.
Отключение XML-RPC
Это уже относится к безопасности, но полезно. По крайней мере для тех, у кого xmlrpc.php всё еще включен. Ребят, привет!
Кто не знает, что это такое:
xmlrpc.php — нужен для возможности публикации записей отправкой с мобильного устройства.
Уже давно, является проблемой (в плане безопасности) для сайтов на WordPress. Можно
## Отключение XMLRPC
add_filter('xmlrpc_enabled', '__return_false');
Удаление версий скриптов и стилей
У WP есть прикол: в инспекторе отображать версии скриптов и стилей. Выглядит это так:

И снова — угроза безопасности. В теории зная версии скриптов или стилей, особенно популярных плагинов (напр. Elementor), можно совершать атаки.
Касательно производительности — тоже дает очень крохотный, но плюс.
## Удаляем версию скриптов
add_filter( 'script_loader_src', '_remove_script_version' );
## Удаляем версию стилей
add_filter( 'style_loader_src', '_remove_script_version' );
function _remove_script_version( $src ){
$parts = explode( '?', $src );
return $parts[0];
}
Заключение
Все эти сниппеты можно объединить в плагин или добавить в function.php темы\дочерней темы.
Пару слов про CDN от Google: я его подключил и обнаружил что с ним страница стала грузиться даже дольше, чем бе него. Если вы знаете куда копать, напишите в комментариях.
С помощью этих хуков я выиграл 2,3 секунды на загрузку страницы в десктопе и 1,5 секунды на мобильной версии сайта.