WP Manifestindependent plugin directory
manifest / utilities / ship-modal

Ship Modal self-updates

HTML・画像バナー・期間指定・表示頻度・計測に対応したモーダル管理プラグイン。

by Ship Inc. · github.com/ship-git-admin/ship-modal

★ 0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/ship-git-admin/ship-modal/archive/refs/heads/main.zip

Ships its own WordPress updater (Plugin Update Checker), so new versions show up under Dashboard → Updates.

1.8.9での更新

  • 接続元IP 150.249.250.59 からのShip Modal内部計測とGA4/GTMイベント送信を除外。

1.8.8での更新

  • Plugin Update Checkerを公式5.7へ更新し、GitHub Release Asset経由の自動更新互換性を維持。

1.8.7での更新

  • 一時停止中の「離脱意図で表示(PCのみ)」「ボタンから表示」の説明カードを管理画面から非表示化。

1.8.6での更新

  • ボタン文言を1行16文字・最大2行(合計32文字)に統一し、ショートコードの使い方・設置位置を管理画面に追加。
  • 不正な日時や開始日時が終了日時より後の期間は保存を拒否し、入力内容を保持して修正できるよう改善。
  • 「離脱意図で表示(PCのみ)」と「ボタンから表示」を新規設定で一時停止し、既存設定は保持。
  • 一時停止中の機能一覧をREADMEに整理し、ショートコード案内の未定義変数警告を修正。

1.8.5での更新・同意制御の変更

  • 自動更新はGitHub Releaseと一致するクリーンなRelease Assetがある場合だけ検出します。タグZIPやmainブランチへフォールバックしません。
  • 同意撤回後に再同意した場合も、対象GA4測定IDの初期化を再送します。
  • CMPの初期値がfalse、0、空文字列の場合も未同意として扱います。

1.8.4でのセキュリティ・同意制御の変更

  • 公開イベントはevent_idが必須です。空・不正な値はHTTP 400で拒否します。
  • 旧固定トークンは終了し、発行時刻付き署名トークンのみを受け付けます。デプロイ時はページ/CDNキャッシュを更新してください。
  • 重複排除はイベント単位のDB transientではなく、専用テーブルの一意キーで行います。

WordPress向けのモーダル管理プラグインです。

主な機能

  • 固定フレーム(画像のみ / 画像+テキスト / テキスト / ページャー)
  • 基本画像のalt設定、スマホ用画像(任意)のレスポンシブ切り替え(767px以下)
  • 入力を止めないサニタイズ保存と画面幅に応じた自動折り返し
  • 画像+ボタンの複合レイアウト(画像位置:上・左・右)
  • 複数ページのページャー(ページごとに画像・見出し・本文・ボタン)
  • 中央カード、下部バナー、右下ポップアップ、フルスクリーンの4デザイン
  • トップページ / 投稿・固定ページ / 指定ページ / ショートコード / 全ページの表示範囲(新規作成時はトップページのみ)
  • 公開中の固定ページ・投稿・カスタム投稿タイプから表示先を複数選択
  • 表示対象を1つのUIに統合し、タイトル検索・投稿タイプ絞り込み・選択チップで管理
  • モーダルごとのborder-radius、padding、max-width設定(px)
  • 画像専用モードでは角丸・内側余白の入力欄を一時非表示(将来フラグで再表示可能)
  • 基本画像選択時にPC画像の横幅を最大幅へ自動入力(必要に応じて手動変更可能)
  • ボタン文言は1行16文字・最大2行(合計32文字、<br>で改行)に制限し、保存時の超過分を自動調整
  • 自動表示 / スクロール到達 / 離脱意図 / ボタン表示、遅延秒数、開始・終了日時
  • 毎回、このタブで1回、端末の現地日付で1日1回、このブラウザで1回の表示頻度
  • 表示回数・クリック数・クリック率の計測
  • 閉じる回数・ページャー閲覧数の計測
  • 日別集計、期間指定CSV出力、全計測データのリセット
  • GTM/GA4連携(既存gtagの自動検出、測定ID指定による直接送信、dataLayerフォールバック)
  • ESC、閉じるボタン、背景クリック、フォーカストラップ
  • ページャーの前後移動、ドット移動、左右矢印キー
  • GitHub Release Assetを配布元に限定した自動アップデート(Plugin Update Checker)

一時停止中の機能

運用方針により、現在は次の機能を管理画面で新規選択・入力できないようにしています。既存設定と保存データは削除せず、公開表示も維持します。

  • HTML・テキスト・ページャー入力(画像専用モード)
  • 表示レイアウト「フルスクリーン」
  • 表示対象「投稿・固定ページ(全て)」
  • 起動方法「離脱意図で表示(PCのみ)」
  • 起動方法「ボタンから表示」

再開する場合は、プラグイン読込前に SHIP_MODAL_IMAGE_ONLY_MODE を false、その他の SHIP_MODAL_ENABLE_* 定数を true として定義するか、対応する ship_modal_* フィルターで切り替えてください。

ショートコード: [ship_modal id="123"]

GA4連携

「モーダル」→「計測・GA4連携設定」でサイトのGA4測定ID(G-XXXXXXXXXX)を一度設定すると、GTMにモーダル用のカスタムイベントタグを追加しなくても、表示・クリック・閉じる・ページャー閲覧イベントをGA4へ直接送信できます。ページ上に既存の gtag() がある場合は、測定IDを空欄にしても自動検出して利用します。

送信方式は「自動(推奨)」「GA4へ直接送信」「GTMのdataLayerのみ」から選択できます。GTM側で同じイベントをGA4へ転送している場合は、二重計測を避けるため「GTMのdataLayerのみ」を選択してください。プレビュー中は計測しません。

Cookie同意管理(CMP)と連動する場合は、初期状態を ship_modal_ga4_enabled フィルターで返し、ページ表示後の変更時は window.ShipModalConsent.setAnalyticsConsent(true) / false を呼び出してください。false の間はGoogleタグとGTM向けdataLayerの双方へイベントを送信しません。true に戻した後に発生するイベントから再開します。フィルター未設定時は従来互換で送信を許可します。

// CMPの同意状態が変わったタイミングで呼び出す(文字列ではなく真偽値を推奨)。
window.ShipModalConsent.setAnalyticsConsent(consentGranted === true);

公開計測APIはページ上で誰でも呼び出せるため、GA4同意の制御は必ず利用中のCMP/GTM設定側でも確認してください。

公開計測には、発行時刻付きの署名トークン、必須のイベントID、専用テーブルの一意キーによる短期重複排除、匿名化した一時レート制限を使います。同じ送信のリトライは1回だけ集計されます。統計は広告・不正アクセスの影響を完全には受けない監査値ではないため、重要な判断ではGA4等の外部計測も併用してください。

対応環境

  • WordPress 4.8以上(WordPress 4.8.12 / PHP 7.4.33で動作確認済み)
  • PHP 7.4以上が必要
  • GitHubの自動アップデートにはPHPのJSON拡張が必要です。
  • 開始前のモーダルは非表示のまま待機し、ページを開いたまま開始・終了時刻を迎えた場合もフロント側で表示状態を切り替えます。
  • 期間指定は画面上の表示制御です。開始前の内容もHTMLソースには含まれるため、公開前の機密情報には使用しないでください。