WordPressウェブサイトの速度を向上させるためのちょっとした調整をお探しですか?WordPress Heartbeat APIの制限について考えたことはありますか?少し技術的に聞こえるかもしれませんが、私たちにお付き合いください!
WordPressハートビートAPIは、舞台裏で機能する便利なシステムです。執筆中に投稿を自動保存したり、ダッシュボード通知を送信したりするタスクを処理します。
デフォルトでは、投稿を編集しているときは15秒ごと、ダッシュボードを閲覧しているときは1分ごとに、常に更新を確認します。この頻繁なアクティビティは、サーバーのCPUに負荷をかけ、サイトを遅くする可能性があります。
朗報ですが、読者の中には、Heartbeat APIの頻度を調整することでWordPressのパフォーマンスが大幅に向上したという発見をした人もいます。
この記事では、サイトの速度を最適化するためにWordPressでハートビートAPIを管理する方法を説明します。心配しないでください、それは聞こえるよりも簡単で、依存している重要な機能を損なうことなく実行できます!

ハートビートAPIとは何ですか?
Heartbeat APIは、WordPressが開発者がプラットフォームとやり取りし、新機能を追加するのを支援するために提供する主要なアプリケーションプログラミングインターフェイス(API)の1つです。
ブラウザとサーバー間のリアルタイム通信を有効にするためにWordPress 3.6で導入されました。これは、ユーザーがWordPressダッシュボードにログインしている間に行われます。技術的には、この通信はAJAX呼び出しを使用して処理されます。
要するに、AJAX呼び出しはブラウザとサーバー間のメッセージのようなものです。ページをリロードする代わりに、ブラウザは必要な情報だけをサーバーに要求します。サーバーはページ全体を更新せずに更新を返し、物事をより速く感じさせます。
Heartbeat APIは、次のようないくつかの重要なWordPress機能を可能にします。
- リアルタイム更新: ページをリロードすることなく、ほぼリアルタイムの更新を可能にします。例えば、他の誰かが投稿を編集している場合、通知され、誤って作業内容を変更しないように投稿がロックされます。
- 自動保存:ブログ投稿やページを作成しているとき、Heartbeat APIは60秒ごとに作業を自動的に保存するのに役立ちます。これにより、何か問題が発生しても、最近の変更を失うことはありません。
- ユーザーセッション: これにより、WordPressは現在サイトを使用しているユーザーと、ログインしている期間を把握できます。これはWordPressのセキュリティシステムと連携して、ユーザーログインを安全に管理するのに役立ちます。
- WordPressプラグイン: 多くのWordPressプラグインも、リアルタイム機能を追加するためにHeartbeat APIを使用しています。これには、高度なフォーム処理、コンテンツのバージョン管理、ライブ通知、ユーザーセッション管理、セキュリティ監視などが含まれます。プラグインはHeartbeatを使用して、よりインタラクティブでダイナミックなユーザーエクスペリエンスを作成できます。
これらの機能は非常に役立ちます。問題は、リクエストが多すぎるとサーバーが遅くなることです。
しかし、心配しないでください、管理は簡単です。Heartbeat APIのタイムインターバルを長く設定するだけです。数秒ごとではなく、例えば2分ごとにチェックするようにすることで、ウェブサイトの速度を向上させることができます。
チェックの間隔を長くすると、インスタントアップデートは引き続き行われますが、それほど速くはなりません。ウェブサイトにとって最適なバランスを見つけ、高速でありながら便利なリアルタイム機能をすべて備えていることを確認することが重要です。
ハートビートAPIを制限または無効にする方が良いですか?
さて、さらに優れたWordPressパフォーマンスを得るために、ハートビートAPIを完全にオフにしたいと思うかもしれません。ほとんどの場合、完全に無効にすることは強くお勧めしません!
ハートビートAPIを完全に無効にすると、たとえ一人で作業していて超高速の更新が必要ない場合でも、予期せぬ問題が発生する可能性があります。保存されていない作業を失ったり、重要なセキュリティアップデートを見逃したり、ログインの問題を引き起こしたりするリスクがあります。無効にする前に二度考えてください。
無効にするのではなく、単に頻度を調整するだけで、サイトのパフォーマンスを最適化するための、はるかに安全で効果的な方法であることがほとんどです。
これを踏まえて、WordPress Heartbeat API を制限(無効化)する方法を見ていきましょう。このチュートリアルでは、以下のトピックを扱います。
プラグインでハートビートAPIを制限する(簡単・迅速)
まず、無料のDynamic Front-End Heartbeat Controlプラグインをインストールして有効化する必要があります。詳細な手順については、WordPressプラグインのインストール方法に関するステップバイステップガイドを参照してください。
有効化すると、このプラグインは追加の設定なしで自動的にウェブサイトのパフォーマンス向上を開始します。ウェブサイトの要求の変化に合わせて、リアルタイムでHeartbeatの間隔を調整します。
多くのウェブサイトでは、この自動設定で十分です。しかし、より多くの制御を行いたい場合は、プラグインの設定を使用してハートビート設定を自分で変更することもできます。
ヒント: WP RocketやPerfmattersなどの多くのWordPressパフォーマンスプラグインは、Heartbeat APIを制限することもできます。競合を避けるために、この目的のためには1つのプラグインのみを使用するようにしてください。
オプション:ハートビートAPIを手動で制限または無効にする
Heartbeat API を手動で制御するには、WordPress ダッシュボードの 設定 » DFEHC に移動する必要があります。
この設定ページには、「Heartbeat を無効化」というチェックボックスが表示されます。Heartbeat API を完全にオフにしたい場合は、このボックスをチェックしてください。

ただし、これにより、前述のリアルタイム機能が停止することに注意してください。通常は、ハートビートを完全に無効にするのではなく、制限する方が良いです。
WordPressダッシュボードで作業しているとき、タスクをチェックするHeartbeat APIの頻度を変更できます。これはバックエンドとも呼ばれます。
これを行うには、「Backend Heartbeat Control」オプションを探し、その横にあるチェックボックスをオンにします。

次に、ボックスに数値を入力して新しい間隔を秒単位で設定できます。デフォルトは60秒(1分に1回)であることを忘れないでください。ハートビートのチェック頻度を下げたい場合は、90秒または120秒のようなより大きな数値を入力できます。
同様に、コンテンツエディターで投稿やページを作成しているときに、Heartbeatの間隔を具体的に変更できます。「Editor Heartbeat Control」ボックスを見つけてチェックを入れます。

次に、希望の間隔を秒単位で入力します。デフォルトは15秒ですが、これはかなり頻繁です。
入力中にチェックの頻度を減らしたい場合は、この数値を増やすことができます。数値を直接ボックスに入力するか、小さな上矢印と下矢印を使用して、一度に1秒ずつ数値を変更できます。
このプラグインには、「優先度設定」スライダーも含まれており、サーバーのパフォーマンスと訪問者のニーズのバランスを取ることができます。
「サーバー優先度を上げる」にスライドすると、更新頻度が低下することでサーバー負荷が軽減されます。「訪問者優先度を上げる」にスライドすると、より頻繁な更新が可能になりますが、より多くのサーバーリソースが必要になります。

変更が完了したら、ページの下部までスクロールして「変更を保存」ボタンをクリックしてください。これにより、新しい設定が保存され、機能し始めることが保証されます。
コードでHeartbeat APIを制限する
コードスニペットをウェブサイトに追加することで、WordPressでHeartbeat APIを制限することもできます。
コードの追加は少し怖いかもしれませんが、注意が必要です。コードを直接追加する際に間違いを犯すと、ウェブサイトに問題が発生する可能性があります。
WordPressにウェブ上のコードスニペットを安全に貼り付ける方法を説明する役立つガイドがありますので、まずそれを確認して、より安心して作業できるようにしてください。
コードを追加する最も安全で簡単な方法は、WPCodeプラグインを使用することです。このプラグインには、コードスニペットがライブラリにすでに含まれています。あとは有効にするだけです。
有料版もありますが、このチュートリアルでは、'Heartbeat Setting'スニペットが含まれているため、WPCode無料プラグインを使用します。サイトへの追加方法がわからない場合は、WordPressプラグインのインストール方法のガイドを参照してください。
プラグインがアクティブ化されたら、WPCode » + スニペットを追加に移動して新しいスニペットを作成できます。そのページで、検索機能を使用して「Heartbeat Setting」スニペットを見つけることができます。

次に、スニペットの上にマウスカーソルを合わせ、[スニペットを使用]ボタンをクリックします。
これでスニペット編集ページが開きます。心配しないでください。すべてがすでに設定されています。アクティブにする必要があるのはスニペットだけです。
ページ右上にある「有効化」スイッチを探し、オンの位置に切り替えます。その後、「更新」ボタンをクリックします。

このスニペットは、WordPressでハートビートAPIをどのように制限するかを設定できる新しい項目を一般設定ページに追加します。単に設定 » 一般に移動し、ページの一番下までスクロールしてください。
デフォルトでは、スニペットはハートビート間隔を120秒に変更します。これはパフォーマンスを向上させるための良い出発点です。しかし、この数値を好きなように変更できます。
フィールドに新しい数値を入力するか、フィールドの横にある小さな上下矢印を使用して秒数を調整してください。

数値を変更した後、再度下にスクロールして、[一般設定]ページの最下部にある[変更を保存]ボタンをクリックする必要があることを忘れないでください。これにより、新しいハートビート間隔設定が保存され、機能し始めます。
プロのヒント:ハートビートAPIを制限することで、WordPressのパフォーマンスがどの程度向上したか気になりますか?制限する前と後でスピードテストを実行してください。ウェブサイトのスピードテストを適切に実行する方法に関するガイドで学習できます。
コードに慣れている方のために、このコードスニペットをウェブサイトのファイルに直接追加する別の方法もあります。
コードをテーマのfunctions.phpファイルに直接追加できます。ただし、これは少し高度であり、ほとんどのユーザーにとってWPCodeプラグインを使用する方が一般的に簡単で安全です。
このより高度な方法に興味がある場合は、以下のコードを見つけることができます。
// Add a new setting in wp-admin > Settings > General
add_action( 'admin_init', function() {
register_setting( 'general', 'custom_heartbeat_interval', 'intval' );
add_settings_field( 'custom_heartbeat_interval', 'Heartbeat Interval', function() {
$interval = get_option( 'custom_heartbeat_interval', 120 );
echo "<input type='number' name='custom_heartbeat_interval' value='".absint($interval)."' min='15' max='120' /> seconds";
}, 'general' );
});
add_filter( 'heartbeat_settings', function( $settings ) {
$settings['interval'] = get_option( 'custom_heartbeat_interval', 120 );
return $settings;
});
しかし、ほとんどの人にとって、WPCodeプラグインを使用することがHeartbeat APIを制限するためにおすすめの方法です。
詳細については、WordPressにカスタムコードを簡単に(サイトを壊さずに)追加する方法に関するガイドをご覧ください。
プラグインなしでハートビートAPIを無効にする
ウェブサイトでHeartbeat APIを完全に無効にすることを決定した場合は、テーマのfunctions.phpファイルまたはWPCodeプラグインにコードスニペットを追加することで、それを行うこともできます。
今回は、Heartbeatを無効にするコードがWPCodeライブラリに既に存在しないため、自分でWPCodeにコピー&ペーストします。心配しないでください、それでも簡単です!
まず、前のセクションで説明したように、WPCodeプラグインがインストールされ、有効化されていることを確認してください。WPCodeの準備ができたら、WordPress管理メニューのWPCode » + Add Snippetに移動します。
次に、独自のカスタムコードを追加するオプションを選択する必要があります。「Add Your Own Custom Code (New Snippet)」というスニペットを探してください。このエントリにマウスカーソルを合わせると、「Use snippet」ボタンをクリックできます。

次の画面で、WPCodeは追加するコードの種類を選択するように求めます。
必要なコードはPHPにあるため、「PHPスニペット」オプションをクリックする必要があります。

ここでカスタムスニペット作成ページに移動します。
まず、スニペットにタイトルを付けて、何のためのものか分かるようにする必要があります。良いタイトルは「Disable Heartbeat API」のようなものです。
次に、「コードプレビュー」というセクションで、ハートビートAPIを無効にするコードを貼り付ける必要があります。
ここにコピーして貼り付ける必要があるコードがあります。
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}
そのコードをすべてコピーしてください。
次に、WPCodeの「Code Preview」ボックスに貼り付けます。

ページ上の他のすべての設定は、そのままにしておくことができます。
コードを機能させ、Heartbeat API を無効化するには、スニペットを有効化する必要があります。「Active」スイッチを見つけ、それを「On」の位置に切り替え、次に「Save Snippet」ボタンをクリックします。

これで完了です!WPCode を使用して、ウェブサイトで Heartbeat API を正常に無効化しました。
Heartbeat API を再び有効化したい場合は、WPCode でこのコードスニペットを無効化するだけで簡単に実行できます。WPCode スニペットに戻り、これをオフにするだけです。Heartbeat API を制御する非常に簡単な方法です。
この記事がWordPressでハートビートAPIを制限する方法を学ぶのに役立ったことを願っています。また、ウェブサイトの速度テストを適切に実行する方法や、ウェブサイトを高速化するための最適なWordPressキャッシュプラグインについてもご覧ください。
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。
Jarry
詳細な記事をありがとうございます。分かりやすく、さらに深く知りたい人にも役立つ内容だと思います。古いプラグインを削除してDynamic Front-end Heartbeatプラグインをインストールした後、コンソールエラーが出なくなったのは私にとって重要です!ウェブサイトが瞬時に読み込まれるようになりました。
WPBeginnerサポート
Glad to hear our recommendation was helpful!
管理者
イジー・ヴァネック
WordPressでハートビートがURL生成に影響を与えることはありますか?WP Rocketプラグインを使用してウェブサイトのハートビートを無効にしました。残念ながら、その後WordPressがページのURLを「忘れて」しまい、既存のすべてのページで404エラーが返されるようになりました。常にパーマリンクを再生成する必要がありました。しかし、しばらくするとエラーが再発しました。最終的に、ハートビートを再度有効にすることで解決しました。その後、問題はなくなりました。
WPBeginnerサポート
Heartbeat API を使用して投稿 URL を生成するサイト固有の何かがない限り、そうなるべきではありません。
管理者
イジー・ヴァネック
はい、そうです。ウェブサイトの言語切り替えにはPolylangを使用しています。問題は、他の言語切り替えではなく、1つの言語切り替えでのみ発生しました。URLに問題があったのだと思います。なぜなら、英語の言語切り替えではURLに「/en」が含まれていましたが、チェコ語の言語切り替えでは末尾にこのサフィックスがありませんでした。そのため、ハートビートを無効にすることがこのような影響を与えたのかもしれません。しかし、ご回答ありがとうございます。少なくとも、別のウェブサイトで同様の問題に遭遇することなくハートビートを無効にできることが分かりました。
Arize
また、会員制サイトを運営しており、同時に多くの人がログインします。無効化しても大丈夫ですか?
ジャスウィンダー・カウル
良い情報が満載の記事です!!
サイトで利用したいのですが、あなたが推奨したプラグインは1年間有効になっていません。他に何か提案してもらえませんか?
Dave Kessler
これはSEOの結果に影響を与える可能性はありますか?
O. ライブ
はい!
本当にありがとうございます。昨夜サイトがクラッシュし、HostGator のサポートに数時間問い合わせた後、この問題を解決する必要があると言われました。
プラグインを追加したことで、ホームページの読み込み時間が2秒短縮され(4秒→1.9秒)、ページ全体のサイズが約200KB削減され、PageSpeedスコアが2ポイント向上しました。
ありがとうございます。
WPBeginnerサポート
You are welcome
WordPress のヒントやチュートリアルについては、Facebook で私たちに参加することを忘れないでください。
管理者
Kien
プラグイン kk star ratings を使用していますが、指示に従っても admin-ajax.php が削除されません
Blair2004
WPBeginner は初心者向けチュートリアルだけではありません…
Kate_H
この記事は有益ですが、WPbeginner という名前のウェブサイトには少し場違いなようです…