Как отключить WordPress Heartbeat API в админке и не сломать автосохранение

Heartbeat API в WordPress часто замечают только тогда, когда админка начинает лишний раз дергать сервер, а вкладки с редактором ведут себя нестабильно. На слабом хостинге это проявляется как лишняя нагрузка, на многопользовательском сайте — как конфликты при редактировании, если кто-то слишком агрессивно режет частоту запросов. Полностью отключать Heartbeat без понимания последствий не стоит: он отвечает не только за «пульс» админки, но и за автосохранение, уведомления и проверку блокировки записи.

Когда Heartbeat API действительно мешает

Сначала стоит убедиться, что проблема именно в Heartbeat, а не в тяжелом плагине, медленной базе или плохом объектном кеше. Типичный сценарий — в браузере открыта консоль, и в Network видно регулярные запросы к admin-ajax.php с действием heartbeat. Интервал обычно небольшой, поэтому на страницах с несколькими открытыми вкладками это превращается в постоянный фоновой трафик.

Признаки, по которым можно не гадать

  • в редакторе записей автосохранение работает, но админка заметно «шумит» в Network;
  • на странице редактирования много запросов к admin-ajax.php даже без активных действий;
  • на слабом сервере заметны пики CPU именно в момент работы в админке;
  • при одновременном редактировании записей иногда появляются предупреждения о блокировке поста другим пользователем.

Если нужно проверить источник нагрузки быстро, откройте DevTools → Network и отфильтруйте запросы по heartbeat. Если запросы идут регулярно, а нагрузка растет именно в админке, есть смысл ограничить частоту, а не отключать механизм целиком.

Что лучше: отключить, замедлить или оставить как есть

Для большинства сайтов правильнее не выключать Heartbeat полностью, а уменьшить частоту в админке и на экранах редактирования. Полное отключение оправдано только на очень специфичных установках, где автосохранение и блокировка записей не нужны или решаются иначе. На обычном сайте это плохая идея: вы сами себе создадите риск потерять несохраненный текст.

Подход Что дает Компромисс
Оставить как есть Полная совместимость, автосохранение и блокировка записей работают штатно Больше фоновых запросов в админке
Снизить частоту Меньше нагрузки, поведение редактора сохраняется Чуть реже обновляются уведомления и статус блокировки
Отключить полностью Минимум запросов Риск сломать автосохранение и контроль одновременного редактирования

Пошаговое решение через код

Самый предсказуемый вариант — ограничить Heartbeat только в админке. Для этого не нужен отдельный плагин, достаточно небольшого кода в functions.php дочерней темы или в своем мини-плагине. Если у вас уже есть mu-plugin для технических правок, лучше положить код туда, чтобы он не зависел от темы.

Вариант 1: увеличить интервал Heartbeat в админке

Этот способ обычно безопасен: WordPress продолжит работать, но запросы станут реже. Для большинства сайтов достаточно интервала в 60 секунд вместо стандартного более частого опроса.

add_filter( 'heartbeat_settings', function( $settings ) {
    if ( is_admin() ) {
        $settings['interval'] = 60;
    }

    return $settings;
} );

Если сайт активно редактируется несколькими авторами, не ставьте слишком большой интервал. Слишком редкие запросы ухудшают актуальность уведомлений и могут сделать блокировку записей менее удобной.

Вариант 2: отключить Heartbeat только на экранах, где он не нужен

Иногда проблема возникает не в редакторе, а, например, на страницах списка записей или в отдельных разделах админки. Тогда лучше отключать Heartbeat точечно через wp_deregister_script() только там, где он действительно не нужен. Этот вариант требует аккуратности: не трогайте экран редактирования записей, если не уверены в последствиях.

add_action( 'admin_enqueue_scripts', function( $hook ) {
    if ( $hook === 'edit.php' ) {
        wp_deregister_script( 'heartbeat' );
    }
} );

Этот пример стоит применять только после проверки. Если на странице списка записей у вас нет плагинов, завязанных на Heartbeat, такой шаг может быть оправдан. Но если вы используете плагины с живыми уведомлениями или статусами, они могут перестать обновляться.

Вариант 3: полностью отключить Heartbeat

Полное отключение — крайняя мера. Делать это стоит только если вы понимаете, что автосохранение и блокировка записей вам не нужны, либо вы готовы принять их потерю. В большинстве случаев лучше не идти этим путем.

add_action( 'init', function() {
    wp_deregister_script( 'heartbeat' );
}, 1 );

Если после такого кода редактор начал вести себя странно, верните Heartbeat обратно и используйте ограничение частоты вместо полного отключения.

Как проверить, что решение сработало

Проверка нужна не только по ощущениям. После внесения изменений откройте админку и посмотрите, как изменилось поведение запросов.

  • Откройте DevTools → Network и убедитесь, что запросы к admin-ajax.php с действием heartbeat стали реже или исчезли там, где вы их отключили.
  • Откройте редактор записи и проверьте, работает ли автосохранение: оставьте текст без сохранения и дождитесь штатного автосейва.
  • Если на сайте несколько редакторов, попробуйте открыть одну и ту же запись в двух вкладках и убедиться, что предупреждение о блокировке не пропало.
  • Проверьте, не сломались ли плагины, которые показывают уведомления в админке или используют живое обновление статусов.

Если вы снизили частоту, а не отключили механизм, в Network должно остаться меньше запросов, но редактор по-прежнему должен сохранять черновики и показывать актуальный статус записи.

Частые ошибки и как их исправить

Отключили Heartbeat на всем сайте без проверки

Это самая частая ошибка. После этого часть пользователей замечает, что автосохранение перестало работать как ожидается, а блокировка записей стала бесполезной. Исправление простое: уберите глобальное отключение и замените его на увеличение интервала или точечное отключение на отдельных экранах.

Добавили код в тему, а потом потеряли его после обновления

Если правка лежит в родительской теме, она исчезнет при обновлении. Для технических изменений используйте дочернюю тему или mu-plugin. Это не вопрос удобства, а вопрос воспроизводимости: вы должны точно знать, где живет код.

Слишком сильно увеличили интервал

Интервал в несколько минут может выглядеть привлекательным, но на практике делает интерфейс менее предсказуемым. Уведомления приходят с задержкой, а состояние блокировки записи обновляется медленно. Если цель — снизить нагрузку, начинайте с 60 секунд и проверяйте результат.

Не проверили плагины, завязанные на admin-ajax

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

Практика безопасности и производительности

Если Heartbeat действительно создает лишнюю нагрузку, не ограничивайтесь только им. Проверьте, нет ли в админке тяжелых плагинов, которые делают запросы на каждом экране, и посмотрите на работу кеша объектов, если он у вас включен. Иногда проблема не в самом Heartbeat, а в том, что каждый его запрос запускает дорогую логику плагина.

Для сайтов с большим количеством авторов лучше выбирать мягкую настройку: уменьшить частоту, оставить автосохранение и не ломать блокировку записей. Это дешевле в поддержке, чем потом объяснять редакторам, почему черновик не сохранился вовремя.

Если вам нужно системно чистить админку и убирать лишние технические хвосты, иногда удобнее использовать профильный инструмент вроде Clearfy Pro, но и там важно не отключать все подряд. Любая оптимизация WordPress должна начинаться с проверки, что именно вы убираете и какой функционал при этом теряете.

Как использовать хуки в WordPress для расширения функциональности
21.09.2026
Как использовать WPRemark для автоматического сбора отзывов в WordPress
21.09.2026
Как использовать Meta Box в WordPress для управления дополнительными данными
21.09.2026
Как удалить и заблокировать неиспользуемые регистрации в WordPress с форумами
23.09.2026
Динамические заголовки H1 в WordPress: настройка и примеры
28.09.2026