WordPressサイトを運営していると、記事内にX(エックス)を埋め込む機会がありますよね。お客様のリアルタイムなポストや、口コミをそのままコンテンツに反映できて便利です。

とはいえ、一度に多くのポスト(ツイート)を埋め込みすぎるとページの読み込みが極端に遅く(重く)なることがあります。せっかくの反響をシェアしたくても、ページの読み込み前に離脱されてはもったいない。

そこで今回は、Xの埋め込み過ぎによってページ表示速度が重くなる問題を解決する方法をご紹介いたします。1ページ内で複数のポストを埋め込みたい場合に有効です。

WordPressテーマ「GLUE」
WordPressテーマ「GLUE」
無料で高機能なWordPressテーマが手に入る。

XのJSを削除して、読み込むタイミングを変える

対策はシンプルなのですが、いくつか前提知識が必要になります。手順通りに進めれば誰でも対応できるように、わかりやすく解説いたします。以下の流れで進めていきます。

  1. ポストの埋め込み方を確認する
  2. 埋め込みコードからスクリプトを削除する
  3. 読み込むタイミングを変えたJSを追記する

1. ポストの埋め込み方を確認する

WordPressでポストを埋め込む際、URLをそのまま本文に貼り付ける方法もありますが、今回の対策を行うには専用の「埋め込みコード」が必要です。

公式のコード生成ツール「X Publish(旧Twitter Publish)」にアクセスし、埋め込みたいポストのURLを入力して埋め込みコード(HTML)を取得してください。

2. 埋め込みコードからスクリプトを削除する

1.の手順で埋め込み方法を変更したのは、ある特定のスクリプトを手動で削除するためです。例えば、下記のポストを表示するため埋め込みコードを「Twitter Publish」で取得した場合・・・

エディタには以下のように出力されます。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">不動産ポータルサイトが作れるWordPressテーマを作りました。レインズのように自社サイトに物件掲載ができます。<a href="https://t.co/nw5cpOpYJJ">https://t.co/nw5cpOpYJJ</a></p>&mdash; WordPressテーマTCD (@tcd_jp) <a href="https://twitter.com/tcd_jp/status/1887813049425522717?ref_src=twsrc%5Etfw">February 7, 2025</a></blockquote> 
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

一番下にある <script async src="https://platform.twitter.com/widgets.js" …></script> という記述が、表示を重くしている原因です。

記事内に貼り付けるすべてのポストから、この最後の1行(<script>〜</script>)を削除してください。

※このスクリプトを削除した状態では、一時的にXのデザイン(枠線やいいねボタンなど)が適用されず、ただのテキストとリンクとして表示されますが、次のステップで解決するので問題ありません。

スタイル無しのポスト

3. 読み込むタイミングを変えたJSを追記する

ページを開いた瞬間ではなく、ユーザーがスクロールなどの「操作」を開始した瞬間に、削除したスクリプトを1回だけ読み込ませるコードを設置します。

記事の最下部(または「カスタムHTML」「カスタムスクリプト」ブロックなど)に、以下のコードをコピペして貼り付けてください。

そこで、ページの表示速度に影響しないタイミングでJSを読み込む記述を追記します。

ポストを埋め込んでいるページのエディタを開き、クラシックエディタのテキストエディタにて下記の記述をコピペします。エディタの最下部に設置すればOKです。右上のボタンからコピーいただけます↓

<script>
(function(window, document) {
  function loadXWidget() {
    // X(Twitter)のJSを動的に1回だけ読み込み
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.async = true;
    script.src = 'https://platform.twitter.com/widgets.js';
    script.charset = 'utf-8';
    var firstScript = document.getElementsByTagName('script')[0];
    firstScript.parentNode.insertBefore(script, firstScript);
  }

  var isLazyLoaded = false;
  function triggerLazyLoad() {
    if (isLazyLoaded === false) {
      isLazyLoaded = true;
      
      // 複数回呼び出しを防ぐためイベントを解除
      window.removeEventListener('scroll', triggerLazyLoad);
      window.removeEventListener('mousemove', triggerLazyLoad);
      window.removeEventListener('mousedown', triggerLazyLoad);
      window.removeEventListener('touchstart', triggerLazyLoad);
      window.removeEventListener('keydown', triggerLazyLoad);
      
      loadXWidget(); // XのJSを実行
    }
  }

  // ユーザーの操作を検知するイベントリスナー
  window.addEventListener('scroll', triggerLazyLoad, { passive: true });
  window.addEventListener('mousemove', triggerLazyLoad, { passive: true });
  window.addEventListener('mousedown', triggerLazyLoad, { passive: true });
  window.addEventListener('touchstart', triggerLazyLoad, { passive: true });
  window.addEventListener('keydown', triggerLazyLoad);

  // ページ更新時やアンカー遷移で既にスクロールされている場合
  window.addEventListener('load', function() {
    if (window.pageYOffset > 0) {
      triggerLazyLoad();
    }
  });
})(window, document);
</script>

【コードの解説】
このスクリプトは、ユーザーがページを開いた後、以下のいずれかの操作を行った瞬間に初めてXのプログラム(widgets.js)を読み込みます。

  • scroll・・画面をスクロールしたとき
  • mousemove・・マウスを動かしたとき
  • mousedown・・マウスのボタンを押したとき
  • touchstart・・タッチされたとき
  • keydown・・キーボードを押したとき

最初の「ページを開いた瞬間(初期ローディング時)」の通信負荷をゼロにできるため、ページ表示速度が劇的に高速化します。ユーザーが画面を動かした瞬間にデザインがパッとX仕様に切り替わるため、閲覧上の違和感もほとんどありません。

実際に表示速度を検証してみた

以下それぞれのケースの検証結果をシェアいたします。

A:ポストのURLだけを記事内に埋め込んだ場合
B:XのJSを削除して、読み込むタイミングを変えて対策した場合(今回ご紹介した方法)

当サイトのお知らせに、約40ポストを埋め込んだページがあるので、そのページのテスト環境をPageSpeed Insightsにて検証した結果です。

  • Aの検証結果
  • Bの検証結果
Aの検証結果
Bの検証結果

上記はPCの表示速度の点数ですが、圧倒的に改善されていることが確認できます。

Aでは白い画面が何秒も表示されておりましたが、対策を施したBでは、体感表示速度も他のページと差はありませんでした。前述の通り、スクロール等の動作を行った瞬間にポストのJSが読み込まれるので、Xのスタイルも問題なく適用されます。

対策前(URL直貼り):初期読み込み時に40回分の外部通信が走り、白い画面のまま数秒待たされる(スコアも大幅低下)。
対策後(本対策を適用):初期読み込みが通常のページと変わらない速さになり、パフォーマンススコアが劇的に改善。体感速度も驚くほど軽くなりました。

PageSpeed Insightsのスコア改善方法の記事もご参照ください。

まとめ

Xのポストを多く埋め込むとサイトが重くなる問題は、「個別のスクリプトを消して、ユーザーの操作後に一括で遅延読み込みさせる」ことで綺麗に解決できます。

  1. ポストの埋め込みをURL直書きから埋め込みコードに変更
  2. ポストの埋め込みコードからスクリプトを削除
  3. スクロール時などにJSを読み込む記述を追加

少しテクニカルに感じるかもしれませんが、作業自体は「コードの一箇所を消す」「最後に専用コードを貼る」のコピペだけで完了します。

サイトの表示速度はSEOや離脱率に直結する重要な要素ですので、口コミまとめ記事などを書く際はぜひこの方法を試してみてください!

世界最高品質のデザインの
WordPressテーマ集
WordPressテーマ「ISSUE」
WordPressテーマ「ISSUE」
人材不足を解決する求人採用サイトを。
WordPressテーマ「SEEED」
WordPressテーマ「SEEED」
Webサービスを販売するLP型テーマ。
WordPressテーマ「GENESIS」
WordPressテーマ「GENESIS」
スタイリッシュな企業サイトの決定版。
WordPressテーマ「SOLARIS」
WordPressテーマ「SOLARIS」
一流の企業のための一流の企業サイトを。