Amazonで商品を見る セール会場へ

WordPress│GitHub Actionsで集めたデータを参照&表示する方法

外部から取ってきたデータを、毎日決まった時刻に WordPress の記事へ反映したい。

よくある要件です。

株価でも天気でも為替でも、やることは同じです。

「どこか(GitHub Actions)で定期実行してデータを作り、それを WordPress に表示する」。

GitHub Actionsで定期取得したデータをWordPress側で表示する例として挙げられた指標のイメージ。
たとえばこういう指標を取得・表示できる

問題はその2つをどうつなぐかでした。

実際に組んでみたら、教科書どおりにいかない箇所が次々に出てきたので、動く最小構成と一緒に共有します。

提示されているサンプルコードを実行して得られた表示結果の例。
この記事のサンプルコードの結果です。
目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

なぜ「WordPress から取りに行く」ではダメだったのか

最初に考えるのは、たぶんこれです。

記事のページで JavaScript を書いて、データ元の API を直接 fetch() すればいいのでは?

これはほぼ確実に失敗します。

多くの API は CORS ヘッダを返さないので、ブラウザ側で遮断されます。

私が使いたかった API も、コマンドラインからは普通に取れるのにブラウザからは一切通りませんでした。

# これは通る
curl "https://example.com/api/data"

# ブラウザの JavaScript からは CORS でブロックされる

つまりサーバー同士で受け渡す必要がある、ということです。

次に考えるのが「GitHub Pages に JSON を置いて、WordPress から取りに行く」。

これは動きますが、リポジトリを非公開にすると GitHub Pages は有料プランが必要です。

コードを人に見せたくない場合はここで詰まります。

そこで逆向きにしました。

GitHub Actions(定期実行)
  └ データを取得・加工
      └ WordPress の受信エンドポイントに POST
          └ プラグインがオプションに保存
              └ ショートコードが表示

この形にすると、こうなります。

  • リポジトリは非公開のままでいい
  • 記事の表示時に外部通信が一切発生しない(保存済みの値を読むだけ)
  • サーバーを借りる必要がない(GitHub Actions の無料枠で足りる)

3つ目が地味に効きます。

1日1回の実行なら、月の消費は10分弱です。

以下サンプルコードと知見です。

定期実行の構成と知見を踏まえたサンプルコードの実行結果例。
この記事のサンプルコードの結果です。

この記事だけ読みたい方は単品購入、ほかの有料記事も読みたい方は購読プランをご確認ください。

購読対象の記事・料金は、下のプラン案内で確認できます。

役に立った記事を、ブログやSNSで紹介しませんか?

紹介制度の対象記事・購読プランを購入した方は、codocで専用リンクと報酬条件を確認できます。

専用リンク経由で購入されると、設定された紹介報酬が発生します。

購読プランの紹介報酬は初回課金のみが対象です。

codocで紹介リンク・報酬条件を確認する

紹介時は、広告・PRであることが読者に分かるように明記してください。

  • URLをコピーしました!

実装を任せたい方へ

WordPressのカスタマイズ代行

ブロックの追加、テーマの改修、管理画面の調整など、記事で紹介している内容の実装を承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次