X(旧Twitter)のポストを埋め込み表示できるようにする(Next.js)

PRを含みます

Next.jsで制作したサイトでXのポストを表示するための方法を紹介する。結論から言うと記事を表示するためのarticleコンポーネントに以下のようにコードを追加した

編集内容

"use client"; // クライアントサイドでの処理(useEffect)が必要なため追加

// 1. 先頭で Script をインポート
import Script from "next/script";

// ...中略

export default function Article({ data, relatedContents }: Props) {
  // --- X(Twitter)の埋め込みを再描画する処理 ---
  useEffect(() => {
    // ページが表示された時に、埋め込みツイートをスキャンして表示させる
    // @ts-ignore
    if (window.twttr && window.twttr.widgets) {
      // @ts-ignore
      window.twttr.widgets.load();
    }
  }, [data]); // 記事データが変わるたびに実行

  if (!data || !data.main) {
    return <div>記事が見つかりませんでした。</div>;
  }

  // ...中略

  return (
    <>
      {/* X(Twitter)のウィジェットスクリプトを読み込み */}
      <Script
        src="https://platform.twitter.com/widgets.js"
        strategy="afterInteractive"
      />
      {/* ...以下、既存のコード */}

主な変更点

主な変更点は以下の2点です。

  • next/script の導入: X(Twitter)の表示に必要なJavaScriptを読み込む。
  • useEffect の追加: ページを切り替えた時にも、確実にツイートが表示(レンダリング)されるようにする。

microCMSでXのポストを埋め込む方法

以前以下の記事で紹介したhtmlをそのまま埋め込む方法を利用した。Xの「ポストを埋め込む」というところから貼り付けるだけ

実際の埋め込み

事前にlocalhostかつmicroCMSのプレビューで表示確認をしたが、問題なく表示されることを確認した

まとめ

今回、うまくXのポストを表示できるようにすることができた。ほかの無料ブログやWordpressでは当たり前にできることだろうけれども、無料で運用しているサイトなので一つ一つ地道に機能追加を進めていこうと思う。

Next.js+ヘッドレスCMSではじめる! かんたんモダンWebサイト制作入門 高速で、安全で、運用しやすいサイトのつくりかた
Next.js+ヘッドレスCMSではじめる! かんたんモダンWebサイト制作入門 高速で、安全で、運用しやすいサイトのつくりかた
この記事を書いた人
もなか

もなか

Web制作で学んだことApple、スマホ関連のニュース、日常のつぶやきをまとめています。お気軽にフォローしてください。

関連記事