公開日:
カテゴリー:

℃(ど) - 観光情報サイトにおけるコンテンツ管理の自動化

目次

この記事はSnow Monkey / unitone Advent Calendar 2025の24日目の記事です。

「体温を帯びる瀬戸内の島」をコンセプトに、香川県三豊市の粟島・志々島・荘内半島の観光情報を発信するWEBサイト「℃(ど)|瀬戸内・三豊の島旅ガイド」。greenciderではこのサイトの企画・デザイン・開発を担当しました。

観光情報サイトでは、スポットやイベントなど多様なコンテンツを管理する必要があります。また、期間に応じてステータスを適切に更新しなければなりません。本記事では、これらの運用を効率化するために実装した技術的な仕組みを紹介します。

℃(ど)|瀬戸内・三豊の島旅ガイド

「体温を帯びる島」香川県三豊市の粟島・志々島・荘内半島の観光スポット・イベント・文化・島暮らしの情報サイトです。

do-mitoyo.com

プロジェクトの詳細や制作背景については、以下の制作実績ページもご覧ください。

体温を帯びる瀬戸内・三豊の島々の情報を熱を持って伝えるコンセプト開発とWEBサイト制作・運用|greencider(グリーンサイダー)

瀬戸内国際芸術祭2025の会場となる三豊市の島々を紹介する「℃(ど)|瀬戸内・三豊の島旅ガイド」。コンセプト開発とWEBサイト制作・運用をgreenciderが担当しました。

greencd.jp

プロジェクトの背景

三豊市の島々や荘内半島の魅力を発信するにあたり、以下の要件がありました。

  • 観光スポットやイベント情報をわかりやすく発信できること
  • エリア・ジャンル・季節など複数の軸でコンテンツを分類できること
  • 運営スタッフが簡単にコンテンツを更新できること

運用上の課題

多様なコンテンツの管理

サイトでは「スポット」と「イベント」の2種類のコンテンツを扱います。それぞれにエリア(粟島・志々島・荘内半島)、ジャンル、季節といった複数の分類軸があり、柔軟なデータ構造が必要でした。

期間に応じたステータス管理

コンテンツのステータスを公開期間に応じて更新する必要もありました。

  • スポット:期間限定スポットの公開・終了の切り替え
  • イベント:開催前→開催中→開催終了のステータス遷移

コンテンツ数が増えるほど手動でのステータス管理は困難になり、更新漏れのリスクも高まります。

非技術者による運用

サイトの更新は運営スタッフが行います。技術的な知識がなくても直感的に操作でき、入力ミスを防げる仕組みが必要でした。

技術スタックの選定

WordPress + Snow Monkey

当初はAstro + microCMSのJamstack構成も検討しました。しかし予算面の制約に加え、投稿コンテンツだけでなく固定ページもエディタから編集可能にしたかったため、WordPressを採用しました。

WordPressのカスタム投稿タイプ・タクソノミーで柔軟なデータ構造を実現し、テーマにはブロックエディタへの最適化と拡張性からSnow Monkeyを選定しました。

観光サイトではコンテンツが増えるにつれて、目的の情報を見つけにくくなります。そこでSnow Monkey Searchを導入しました。

このプラグインはアーカイブページに絞り込み検索機能を追加できます。スポットやイベントをエリア・ジャンル・季節などのタクソノミーで絞り込めるようにし、ユーザーが目的のコンテンツを探しやすくしました。

自動化で運用負荷を下げる

手動運用の限界を解消するため、いくつかの自動化を取り入れました。

ステータスの自動更新

スポットとイベントのステータスを日付に基づいて自動更新する仕組みを構築しました。

スポットのステータス

スポットには「常設」「期間限定」「公開期間外」の3つのステータスがあります。期間限定スポットは公開開始日・終了日に基づいてステータスが決まります。

  • 公開期間なし → 常設
  • 公開開始日前または公開終了日後 → 公開期間外
  • 公開期間中 → 期間限定

イベントのステータス

イベントには「開催前」「開催中」「開催終了」の3つのステータスがあります。

  • 開始日前 → 開催前
  • 開始日〜終了日 → 開催中
  • 終了日後 → 開催終了

ステータスの一括更新はWP-CLIのコマンドとして実装し、サーバーのcronで毎日定時に実行しています。これにより、ステータスの更新漏れを防いでいます。

ACFバリデーションによる入力ミス防止

カスタムフィールドにはAdvanced Custom Fields(ACF)を使用しています。日付フィールドには以下のバリデーションを実装し、入力ミスを防いでいます。

  • スポット:公開終了日は公開開始日と同じか、それより後であること
  • イベント:終了日は開始日と同じか、それより後であること
  • イベント:申込期限は開始日より前であること

これらの条件を満たさない場合、投稿を保存できません。

ACFのカスタムバリデーションの詳細は以下の記事で紹介しています。

Advanced Custom Fieldsにカスタムバリデーションを追加する|greencider(グリーンサイダー)

ACFに独自の入力チェックを追加する方法を解説。acf/validate_valueフィルターの基本から、日付の前後関係を確認する応用例まで紹介します。

greencd.jp

また、投稿保存時にはステータスの整合性もチェックしています。日付とステータスに矛盾がある場合は自動的に正しいステータスに更新されます。

保存時に投稿情報を自動更新する方法は以下の記事で紹介しています。

Advanced Custom Fieldsの更新時に投稿情報を自動更新する|greencider(グリーンサイダー)

Advanced Custom Fieldsのacf/save_postアクションで、投稿保存時にタイトルやタクソノミーを自動更新する方法を解説します。

greencd.jp

お知らせバーの自動制御

Snow Monkeyにはページ上部に任意のリンク付きテキストを表示できる「お知らせバー」があります。本サイトでは強調したいお知らせ投稿のタイトルとリンクを設定しています。

通常はカスタマイザーから設定しますが、本サイトでは投稿編集画面から直接制御できるようにしました。編集画面でチェックボックスをONにした記事が自動的にお知らせバーに表示されます。投稿保存時にテーマカスタマイザーの値を自動更新することで実現しています。

具体的な実装方法は以下の記事で紹介しています。

Snow Monkeyのお知らせバーに表示する投稿を編集画面で選択する|greencider(グリーンサイダー)

Snow Monkeyのお知らせバーに表示する投稿を編集画面のチェックボックスで選択できるようにする方法を解説。編集者権限でも更新可能になり運用を効率化できます。

greencd.jp

開発環境

開発環境は、以前紹介したMy Snow Monkeyテンプレートをベースに構築しています。

  • PostCSSによるCSSのビルド
  • コードの自動リント・フォーマット
  • ライブリロード機能付きのWordPressローカル環境
  • コミット前のファイルのリント、フォーマット、エラーの検知
  • GitHub ActionsによるCI/CD
  • Renovateによる依存パッケージの更新

Snow Monkey開発を快適にするMy Snow Monkeyテンプレートの紹介|greencider(グリーンサイダー)

リンター・フォーマッター・ライブリロード・CI/CDを備えたMy Snow Monkeyテンプレートを紹介。開発環境を整備し、快適なSnow Monkey開発を実現します。

greencd.jp

まとめ

本プロジェクトでは、WordPress + Snow Monkeyをベースに観光情報サイトの運用を効率化しました。Snow Monkey Searchによる絞り込み検索、WP-CLIによるステータス自動更新、ACFバリデーションによる入力ミス防止など、運営スタッフの負担を減らす仕組みを実装しています。

同様の観光・イベント系サイトを構築する際の参考になれば幸いです。

記事をシェアする
この記事が参考になったらシェアしていただけると嬉しいです!

私たちgreenciderは「地域のクリエイティブ・パートナー」です。

スタッフそれぞれの専門スキルや興味関心を生かして、地域課題をクリエイティブの力で解決しています。

制作に関するご相談はお問い合わせフォームよりお気軽にご連絡ください。

また、私たちgreenciderとともに、クリエイティブを通して地域課題や地方創生に取り組みたい方も、ぜひお問い合わせフォームよりご連絡ください。

お問い合わせ|greencider(グリーンサイダー)

制作のご相談や見積もり依頼、その他お問い合わせはお問い合わせフォームよりお気軽にご連絡ください。

greencd.jp