2026年7月6日

2026年7月6日

WordPressのGatsbyサイトを構築する方法

はじめに

この記事では、WordPressのコンテンツを活用しながら、Gatsbyという先進的な静的サイトジェネレーターで動的なWebサイトを作成する方法について詳しく紹介します。これにより、高速なパフォーマンスと効率的な開発プロセスを実現できます。

症状・背景

このテーマが必要になる主な場面:

  • WordPressから静的サイトに移行したい場合
  • サイトの読み込み速度を大幅に向上させたい場合
  • 動的なコンテンツと静的なページを組み合わせたハイブリッドアプローチを取りたい場合
  • フロントエンド開発者の視点から、より効率的にサイトを管理したい場合

手順・設定方法

ステップ1: WordPressデータベースのエクスポートと準備

# WordPressデータベースのバックアップを作成します。
mysqldump -u [DB_USER] -p[DB_PASSWORD] [DB_NAME] > wp_backup.sql

# Gatsbyプロジェクト用に新しいディレクトリを作成します。
mkdir gatsby-wordpress-site
cd gatsby-wordpress-site

ステップ2: Gatsbyプロジェクトの初期化と設定

# Gatsby CLIをインストールします。
npm install -g gatsby-cli

# 新しいGatsbyプロジェクトを作成します。
gatsby new wp-gatsby-site

# WordPressからデータを抽出するためのプラグインをインストールします。
cd wp-gatsby-site
npm install @tryghost/gatbsy-source-graphql

ステップ3: GraphQL APIとデータソースの設定

# Gatsbyプロジェクトの設定ファイルを開きます。
code gatsby-config.js

# WordPressとの連携を設定するために、GraphQL APIの情報を追加します。
// gatsby-config.js
plugins: [
  {
    resolve: `gatsby-source-graphql`,
    options: {
      typeName: `WPGraphQL`,
      fieldName: `wpgraphql`,
      url: `http://localhost/graphql`, // WordPress GraphQLエンドポイントのURL
      headers: {
        Authorization: process.env.WP_GITHUB_TOKEN, // 必要な場合、認証トークンを設定します。
      },
    },
  },
],

ステップ4: カスタムコンポーネントとスタイルの追加

# プロジェクト用に新しいCSSファイルを作成し、スタイルを適用します。
touch src/css/site.css
code src/css/site.css

// src/css/site.css
body {
  background-color: #fff;
  font-family: Arial, sans-serif;
}

# WordPressからのデータを使用してページを構築するためのコンポーネントを作成します。
cd src/pages
code index.js

// src/pages/index.js
import React from "react"
import { useStaticQuery, graphql } from "gatsby"

const IndexPage = () => {
  const data = useStaticQuery(graphql`
    query {
      allWpPost {
        edges {
          node {
            id
            title
            excerpt
            slug
            date(formatString: "YYYY-MM-DD")
          }
        }
      }
    }
  `)
  
  return (
    <div>
      {data.allWpPost.edges.map(post => (
        <article key={post.node.id}>
          <h2>{post.node.title}</h2>
          <time dateTime={post.node.date}>{post.node.date}</time>
          <p dangerouslySetInnerHTML={{ __html: post.node.excerpt }} />
        </article>
      ))}
    </div>
  )
}

export default IndexPage

注意事項

  • サイトの移行前に必ずバックアップを取ること。
  • GatsbyとWordPress間でデータ同期を行う際は、セキュリティ上の問題に注意すること。
  • データベースの大規模なサイトでは、エクスポートとインポートが時間のかかる作業となるため、適切な計画を立てて対応すること。
  • カスタムフィールドやカスタムポストタイプの取り扱いには、特別な設定が必要になる場合がある。

まとめ

1. バックアップ: 移行前に必ずデータベースとコンテンツのバックアップを取ること。

2. セキュリティ: APIの利用時には適切な認証やアクセス制御を行ってください。

3. テスト: リリース前の十分なテストを行い、パフォーマンスと機能が期待通りに動作することを確認してください。

4. 更新管理: WordPress側でのコンテンツ更新はGatsbyのビルドプロセスによって反映されるため、適切なスケジュールでサイトを再構築することが重要です。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ