Closed9

Gatsbyで管理しているブログをJAMStack構成に。

yyyyyy
  • WordpressをヘッドレスCMSとして使用し、Gatsbyで投稿データをgraphqlで取得し、静的サイトを生成する構成へ
yyyyyy

作業の流れ

  1. WordpressをAWSに配置(lightsail使う)
  2. Wordpress側諸々設定
  3. gatsby-source-wordpressを導入
  4. コンテンツ移行し表示などGatsby側で調整
yyyyyy
  1. WordpressをAWSに配置(lightsail使う)

基本的にlightsail公式に書いてあるとおりに実行
https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-tutorial-launching-and-configuring-wordpress

Route53にLightsailの静的IPアドレスをAレコードとして作成。
参考: https://qiita.com/tomokei5634/items/a5dfb8504989ed93c31b

作成したURLにアクセスすることで、Lightsailのデフォルトの画面が表示されることを確認
※ 今回はもともとドメインは取得済みであったが未済の場合はもちろん取得する必要がある。

yyyyyy
  1. gatsby-source-wordpressを導入

https://www.gatsbyjs.com/plugins/gatsby-source-wordpress/

  • gatsbyのレポジトリにてgatsby-source-wordpressをインストールして設定ファイル更新し、gatsby developしたところ、以下エラー。
    gatsby-source-wordpress  Your remote version of WPGatsby is not within the accepted range
    (>=0.9.0 <2.0.0)
    
    This is not a bug and it means one of two things:
     you either need to upgrade WPGatsby or gatsby-source-wordpress.
    
    1. If the version of WPGatsby in your WordPress instance is higher than 2.0.0
    it means you need to upgrade your version of gatsby-source-wordpress.
    
    2. If the version of WPGatsby in your WordPress instance is lower than 0.9.0
    it means you need to upgrade your version of WPGatsby.
    
    Download a matching version at https://github.com/gatsbyjs/wp-gatsby/releases
    or update via http://test-fss.famitra.jp/wp-admin/plugins.php
    

gatsby-source-wordpressの最新バージョンは6.7.0だが今のpackage.jsonだと4.0.8が限界のよう。
4.0.8だとWPGatsby側のバージョンが2.0.0未満である必要がある。本来、Gatsby側をUpdateすべきだが他への影響を考え今回は一旦WP側をダウングレードすることに。

  • こちらの手順でWPGatsbyをダウングレード

gatsby develophttp://localhost:8000/___graphqlにアクセスしてDONE

yyyyyy

アンカーリンク

既存の構成ではgatsby-remark-autolink-headersを使っている。
執筆者がこれまでの運用と変えなくていいようにするために一旦以下構成で。

  • WP側にプラグインでEasy Table of Contentsを導入
  • gatsby側で上記プラグインデフォルトのid, classに対してこれまでと同様のスタイルを適用

WP側では適切に動作するアンカーリンクがGatsby側で適切に動作しない事象。
→ ググった結果、これでFIX

yyyyyy

記事取得

WPで記事作成/更新するだけだとgatsby側には反映されず、ビルドが必要。

現状構成がS3 + Cloudfrontのため、wordpressで更新があった際にGithubActionsを作動させるように要設定。(Netlifyとかvercelとかだとそれ用のプラグインみたいなのがある)

WPにはアクションフックが設けられているため、それを使って、期待するアクション時にwebhookでGithub ActionsにリクエストするようにWP側に実装。
GithubActionsのrepository_dispatchが外部からのリクエストを受けて発火させることができる。
https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows#repository_dispatch

このスクラップは2022/04/03にクローズされました