Heartbeat API w WordPressie możesz ograniczyć albo całkowicie wyłączyć za pomocą wtyczki lub kodu w pliku functions.php. Najpierw warto zwiększyć interwał zapytań, ponieważ całkowite wyłączenie mechanizmu w panelu administracyjnym może odebrać autozapis i informacje o blokadzie edytowanego wpisu.
Czym jest Heartbeat API i dlaczego obciąża serwer?
Heartbeat API to natywny mechanizm WordPressa, który zapewnia komunikację między przeglądarką a serwerem za pomocą AJAX. Wykorzystuje plik admin-ajax.php i cyklicznie wysyła żądania, między innymi po to, aby zapisywać szkice, wyświetlać powiadomienia, kontrolować sesję użytkownika oraz informować, że dany wpis jest edytowany przez inną osobę.
W panelu edycji zapytania mogą pojawiać się mniej więcej co 15 sekund, a w pozostałych częściach kokpitu zwykle co 60 sekund. Przy wielu zalogowanych użytkownikach, otwartych kartach lub ograniczonych zasobach hostingu powoduje to dużą liczbę żądań do admin-ajax.php. W efekcie rośnie zużycie CPU, a strona może reagować wolniej.
Czy wyłączać Heartbeat API, czy tylko ograniczyć jego działanie?
Najpierw sprawdź, czy Heartbeat rzeczywiście jest źródłem problemu. W logach serwera szukaj częstych żądań POST do /wp-admin/admin-ajax.php. Pomocne mogą być także informacje o wysokim zużyciu CPU przekazane przez hosting.
Na problem mogą wskazywać następujące objawy:
- częste żądania do
admin-ajax.phpwidoczne w logach serwera, - nagły wzrost zużycia procesora przy pracy kilku redaktorów,
- spowolnienie kokpitu lub całej witryny podczas edycji treści,
- przekroczenie limitów zasobów na hostingu współdzielonym.
Bezpieczniejszym rozwiązaniem jest zwiększenie interwału, na przykład do 60 lub 120 sekund. Całkowite wyłączenie w panelu administracyjnym może spowodować:
- brak automatycznego zapisu szkiców,
- brak informacji o tym, że ktoś inny edytuje ten sam wpis,
- problemy z funkcjami i wtyczkami zależnymi od Heartbeat,
- brak ostrzeżenia o wygasającej sesji administratora.
Na froncie WordPress standardowo nie ładuje Heartbeat dla zwykłych odwiedzających. Pojawia się tam tylko wtedy, gdy wymaga go konkretna wtyczka. Dlatego wyłączenie mechanizmu na stronie publicznej bywa mniej ryzykowne, ale nadal trzeba sprawdzić działanie dodatków.
Jak ograniczyć Heartbeat za pomocą wtyczki?
Wtyczka sprawdzi się, gdy nie chcesz edytować kodu motywu. Do tego celu służą narzędzia typu Heartbeat Control, a podobne ustawienia mogą być też dostępne w niektórych wtyczkach optymalizacyjnych.
- Otwórz w panelu WordPressa sekcję Wtyczki → Dodaj nową.
- Wyszukaj wtyczkę typu Heartbeat Control i zainstaluj rozwiązanie zgodne z aktualną wersją WordPressa.
- W ustawieniach wtyczki wybierz osobno obszar kokpitu, edycji wpisów i front strony.
- Najpierw zwiększ interwał zapytań, zapisz zmiany i sprawdź autozapis oraz edycję wpisów.
Jeśli problem dotyczy wyłącznie strony publicznej, nie wyłączaj automatycznie Heartbeat w całym panelu. Ustawienia powinny obejmować tylko obszar, w którym mechanizm generuje niepotrzebny ruch.
Jak wyłączyć Heartbeat w pliku functions.php?
Ta metoda wymaga dostępu do plików WordPressa i podstawowej znajomości PHP. Kod dodaj do functions.php aktywnego motywu potomnego, a nie motywu głównego. Aktualizacja motywu nadrzędnego może nadpisać własne zmiany.
Przed rozpoczęciem przygotuj następujące elementy:
- aktualną kopię zapasową plików i bazy danych,
- aktywny motyw potomny,
- dostęp do FTP, panelu hostingu lub menedżera plików,
- możliwość szybkiego przywrócenia poprzedniej wersji pliku.
Gdy kopia zapasowa jest gotowa, wykonaj poniższe kroki:
- Otwórz plik
functions.phpmotywu potomnego. - Na końcu pliku dodaj poniższy kod, nie umieszczając go wewnątrz innej funkcji:
-
function stop_heartbeat() { wp_deregister_script( 'heartbeat' ); } add_action( 'init', 'stop_heartbeat', 1 ); - Zapisz plik i sprawdź stronę, panel administracyjny, edytor wpisów oraz funkcje wtyczek korzystające z AJAX.
Ten snippet wyrejestrowuje skrypt Heartbeat globalnie. Oznacza to, że obejmuje także panel administracyjny. Jeżeli chcesz zachować autozapis i blokady edycji, lepszym rozwiązaniem będzie ograniczenie interwału zamiast całkowitego wyłączenia.
Jeżeli po zapisaniu pliku pojawi się biały ekran lub błąd krytyczny, przywróć poprzednią wersję functions.php przez FTP albo panel hostingu. Błąd składni w tym pliku może zablokować zarówno frontend, jak i kokpit.
Wtyczka czy functions.php – którą metodę wybrać?
| Cecha | Wtyczka | Plik functions.php |
|---|---|---|
| Łatwość konfiguracji | Wysoka, ustawienia są dostępne w panelu | Wymaga znajomości PHP i dostępu do plików |
| Ryzyko błędu składniowego | Niskie, nie edytujesz kodu ręcznie | Wyższe, szczególnie przy niepoprawnym PHP |
| Wpływ na instalację | Dochodzi kolejna wtyczka | Brak dodatkowego rozszerzenia |
| Kontrola nad działaniem | Zależy od opcji udostępnionych przez wtyczkę | Pełna kontrola nad kodem i zakresem zmian |
W przypadku strony z wieloma redaktorami zacznij od zwiększenia interwału. Całkowite wyłączenie Heartbeat ma sens głównie wtedy, gdy potwierdzisz jego wpływ na obciążenie serwera i sprawdzisz, że żadna używana funkcja nie zależy od tego mechanizmu.