wpset.ru wordpress wpset.ru

Как отключить WordPress Heartbeat API и убрать лишнюю нагрузку в админке

Heartbeat API в WordPress полезен, но на слабом хостинге или в перегруженной админке он быстро становится источником лишних AJAX-запросов. Чаще всего проблема заметна не в фронтенде, а в редакторе записей, списке постов и на страницах с несколькими открытыми вкладками. Если сайт начинает дергать admin-ajax.php слишком часто, имеет смысл не «ломать» Heartbeat полностью, а ограничить его там, где он действительно не нужен.

Когда Heartbeat API становится проблемой

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

Что именно стоит проверить сначала

  • открыт ли редактор Gutenberg или классический редактор на нескольких вкладках;
  • есть ли в браузере постоянные запросы к /wp-admin/admin-ajax.php;
  • не растет ли время ответа в админке именно при наборе текста или простое;
  • не конфликтует ли автосохранение с плагинами кэша, безопасности или редакторами контента.

Если запросы идут редко и админка работает нормально, отключать Heartbeat целиком не нужно. В WordPress это один из тех механизмов, которые лучше ограничивать, а не вырезать без разбора.

Диагностика: как понять, что виноват именно Heartbeat

Самый практичный способ — открыть DevTools в браузере и посмотреть вкладку Network. Если в списке регулярно появляются запросы к admin-ajax.php с интервалом в несколько секунд, а нагрузка ощущается именно в админке, Heartbeat участвует в проблеме. Дополнительно можно временно отключить сторонние плагины в тестовой среде и сравнить поведение.

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

Как отключить Heartbeat API точечно

Лучший вариант — не выключать механизм полностью, а уменьшить частоту или отключить его на отдельных экранах. Для этого можно использовать фильтр heartbeat_settings и, при необходимости, отключать скрипт только в админке через wp_deregister_script(). Такой подход безопаснее, чем грубое удаление всего подряд.

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

Если проблема в частоте запросов, а не в самом механизме, достаточно увеличить интервал. Это снижает число обращений к серверу, но сохраняет автосохранение и базовую синхронизацию.

<?php
add_filter( 'heartbeat_settings', function( $settings ) {
    $settings['interval'] = 60; // по умолчанию обычно меньше
    return $settings;
} );

Такой код лучше добавлять в мини-плагин или в functions.php дочерней темы. Если тема обновляется часто, мини-плагин надежнее.

Вариант 2: отключить Heartbeat только на фронтенде

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

<?php
add_action( 'wp_enqueue_scripts', function() {
    wp_deregister_script( 'heartbeat' );
}, 100 );

Это не затрагивает админку и не мешает редактору. Но если у вас есть плагин, который использует Heartbeat на фронтенде, сначала проверьте его документацию и тестовую копию сайта.

Вариант 3: отключить Heartbeat в админке на отдельных экранах

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

<?php
add_action( 'admin_enqueue_scripts', function( $hook ) {
    if ( in_array( $hook, array( 'edit.php', 'upload.php' ), true ) ) {
        wp_deregister_script( 'heartbeat' );
    }
} );

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

Сравнение подходов

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

Пошаговое решение без лишнего риска

  1. Сделайте резервную копию или проверьте изменения на staging-сайте.
  2. Определите, где именно идет нагрузка: фронтенд, список записей, редактор, медиа-библиотека.
  3. Сначала попробуйте увеличить интервал Heartbeat до 60 секунд.
  4. Если этого мало, отключите скрипт только на фронтенде.
  5. Если проблема локализована в конкретном экране админки, ограничьте Heartbeat только там.
  6. После каждого изменения проверьте автосохранение и поведение редактора.

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

Проверка должна быть практической, а не «на глаз». Откройте редактор записи и посмотрите, как часто идут запросы к admin-ajax.php. После изменения интервала они должны стать реже. Если Heartbeat отключен на фронтенде, в Network на публичной странице запросов к нему быть не должно.

Дополнительно проверьте:

  • сохраняется ли запись вручную без ошибок;
  • работает ли автосохранение в редакторе;
  • не исчезло ли предупреждение о том, что запись редактируется в другой вкладке;
  • не появились ли ошибки JavaScript в консоли.

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

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

Отключили Heartbeat полностью и сломали редактор

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

Поставили слишком большой интервал

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

Смешали оптимизацию с кэшем и получили непредсказуемый результат

Некоторые плагины оптимизации и безопасности вмешиваются в admin-ajax.php. Если после изменения Heartbeat сайт ведет себя странно, проверьте, не блокирует ли другой плагин AJAX-запросы или не режет ли их серверный кэш.

Безопасность и производительность: что еще имеет смысл сделать

Если задача — разгрузить админку, не ограничивайтесь только Heartbeat. Часто рядом находятся тяжелые плагины, лишние виджеты в консоли и неиспользуемые модули. Для технической чистки сайта можно посмотреть в сторону Clearfy Pro: у него есть инструменты для отключения лишних функций и уменьшения мусора в WordPress. Ссылка на продукт: https://wpshop.ru/plugins/clearfy.

Но даже с плагином не стоит отключать все подряд. Сначала измерьте, что именно грузит сайт, затем убирайте только то, что не используется. Это особенно важно для админки: здесь одна неудачная оптимизация может стоить удобства работы редакторов и контент-менеджеров.

Если нужен короткий чек-лист перед внедрением, используйте такой порядок:

  • проверить, где именно идет нагрузка;
  • сначала увеличить интервал Heartbeat;
  • потом отключать только на фронтенде;
  • в админке трогать только неважные экраны;
  • после каждого шага тестировать автосохранение и редактор.
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше