投稿一覧の画面を開いているだけで、WordPressはサーバーに10秒おきに通信しています。操作を続けていれば、1時間で360回です。
この通信をしているのが「Heartbeat API(ハートビート)」です。記事の自動保存や、ほかの人が編集中の記事に「編集中」と表示する機能を支えている、WordPressの本体の仕組みです。
1人で1画面を開いているだけなら、この回数で困ることはまずありません。管理画面を開くとサーバーが重くなる、レンタルサーバーから「CPUの使用率が高い」と連絡が来た、というときは、どの画面を開いたままにしているかを見直すと原因が分かることがあります。
Heartbeat APIとは
Heartbeat APIは、管理画面を開いている間、ブラウザから一定の間隔でサーバーに通信する仕組みです。通信先は wp-admin/admin-ajax.php です。
Localで作ったテストサイト(WordPress 7.1.3)では、通信のたびに次のような情報がやり取りされていました。
| やり取りされる情報 | 役割 |
| wp-refresh-post-lock | 編集中の記事のロックを延長する。ほかの人が同じ記事を開くと「編集中」と表示される |
| wp-auth-check | ログインの有効期限が切れていないか確かめる。切れていればログイン画面を出す |
| server_time | サーバーの時刻 |
クラシックエディターでは、サーバーへの記事の自動保存もこの通信に乗って送られます。
通信先の admin-ajax.php は、1回ごとにWordPressの本体と、有効にしているプラグインをすべて読み込みます。回数がそのままサーバーの負担になるのはこのためです。
画面ごとの通信の間隔
テストサイトで、画面ごとの間隔を確かめました。

- ダッシュボードなどは、60秒ごと
- 投稿の編集画面と投稿一覧は、10秒ごと(ブロックエディターでも、クラシックエディターでも同じ)
- ブラウザで別のタブに切り替えると、間隔が120秒に延びる
- サイトの表側(ログインしていない訪問者が見る画面)では動かない
裏に回したタブで記録すると、通信は121秒の間隔でした。WordPressの本体のコードにも「フォーカスがないときは120秒」と書かれています。
投稿の編集画面だけでなく、投稿一覧も10秒ごとに通信していました。一覧で「〇〇さんが編集中」と表示するために、ほかの人の編集状況を確かめているためです。3人が記事を書き続けていれば、1時間で1,000回を超えます。手を止めて5分たつと、120秒ごとに減ります。
Heartbeatの間隔を変える
コードで最短の間隔を決める
子テーマの functions.php か、コードスニペット用のプラグインに次のコードを追加すると、Heartbeatの間隔を「最短でも60秒」にできます。
add_filter( 'heartbeat_settings', function ( $settings ) {
$settings['minimalInterval'] = 60;
return $settings;
} );
テストサイトで試すと、10秒だった投稿一覧と編集画面が、どちらも60秒になりました。
interval ではなく minimalInterval を使います。投稿の編集画面では、WordPressのJavaScriptが読み込みのあとに間隔を10秒に設定し直すためです。minimalInterval は、そうした変更があっても下回らない最短の間隔なので、編集画面にも効きます。
指定できるのは600秒までですが、WordPressのコードのコメントには、120秒より長くすると記事のロックなどの機能が制限されると書かれています。
プラグインで変える
コードを書かずに変えたいときは、プラグイン「Heartbeat Control」を使う方法もあります。管理画面、投稿の編集画面、サイトの表側(テーマやプラグインが表側でHeartbeatを使う場合)ごとに、間隔の変更や停止を選べます。
ただし、最後の更新は2023年8月で、WordPress.orgでの動作確認はWordPress 6.3までです。
管理画面から「Heartbeat Control」を検索してインストールするか、下のボタンからもダウンロード可能です。プラグインファイルを wp-content/pluginsディレクトリにアップした後、管理画面から有効化してください。
止めるのはおすすめしない
Heartbeatを完全に止める方法もありますが、次の機能が動かなくなります。
- クラシックエディターでの記事の自動保存
- 複数の人が同じ記事を開いたときの「編集中」の表示と、編集の取り合いの防止
- ログインの有効期限が切れたときの、ログイン画面の表示
クラシックエディターでは、サーバーへの自動保存が止まります。別のパソコンで続きを書く、ブラウザごと閉じてしまった、というときに、書きかけの内容を戻せなくなります。ブロックエディターの自動保存はHeartbeatを使わないので、止めても影響しません。
まずは管理画面の使い方を見直す
コードを入れる前に、使い方で減らせることもあります。
- 書き終えた記事の編集画面は、開いたままにせず閉じる
- 管理画面のタブを、いくつも開いたままにしない
- 使っていないときは、別のタブに切り替えておく(間隔が120秒に延びる)
管理画面が重い原因が、Heartbeatではないこともあります。データベースの「autoload」が多すぎる場合と、PHPのメモリが足りない場合です。
WordPressのサイトが、なんとなく重くなってきた。画像を圧縮したり、キャッシュを入れたりしても、管理画面の動きまで遅い。そんなときに見直したいのが「autoload(自動読み込み)」です。 autoloadは、プラグインやテーマの設定をページの表示のたびにまとめて読み込む仕組みです。長く...
WordPressサイトを操作していると、PHPメモリが足りなくなることがあります。 たとえば、次のようなケースが典型例です。 「ページの保存や設定変更が反映されない。」 「更新途中で止まったりする。」 「画像がアップロードできない。」 こうした問題は、PHPメモリや関連する上...
まとめ
管理画面が重いと感じたら、Chromeのデベロッパーツールの「ネットワーク」で admin-ajax.php に絞り込み、1分間に何回出ているかを数えます。6回並ぶ画面が、10秒ごとに通信している画面です。
複数人で記事を書いているサイトなら、そこで minimalInterval を60にするコードを入れます。編集画面と投稿一覧の通信が、10秒ごとから60秒ごとになります。
WordPressテーマ集











コメント