=== Omusubi === Contributors: kanedashinya Donate link: https://uuuu.to/ Tags: forms, contact form, form builder, drag and drop, submissions Requires at least: 6.2 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 1.2.2 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html ドラッグ&ドロップで高機能なメールフォームを作成できる WordPress プラグイン。お問い合わせから資料請求・キャンペーン応募まで、プロ仕様の機能を標準搭載。 == Description == **Omusubi** は、WordPress 管理画面のビジュアルビルダーで本格的なメールフォームを作成できる、高機能なフォームプラグインです。 クリック操作とドラッグ&ドロップだけで、お問い合わせフォーム・資料請求フォーム・アンケート・プレゼント応募・採用エントリーフォームなど、ビジネスに必要な多彩なフォームを構築できます。送信データは管理画面の表形式ビューで一覧管理・CSV 出力でき、Slack 通知や Google スプレッドシート連携、reCAPTCHA、期間限定受付など、運用に必要な機能を一つのプラグインに集約しました。 = 主な機能 = **フォーム作成** * **ドラッグ&ドロップのビジュアルビルダー** — 15種類以上のフィールドタイプ (テキスト・メール・電話・郵便番号・テキストエリア・セレクト・ラジオ・チェックボックス・数値・日付・時刻・URL・ファイル・見出し・区切り線・非表示) * **12 種類のテンプレート** — お問い合わせ / 資料請求 / アンケート / イベント申込 / 採用エントリー / 予約受付 / プレゼント応募 / 見積り依頼 / 無料相談予約 / 体験レッスン / 商品注文 / 取材依頼 * **横2列レイアウト** — 同じ行に2つのフィールドを配置可能 * **条件分岐表示** — 他フィールドの値に応じて表示/非表示を切替 * **ショートコード対応** — `[omusubi id="1"]` を記事や固定ページに貼るだけ **通知・連携** * **管理者通知メール + 送信者への自動返信メール** — 件名・本文をカスタマイズ可能 * **Slack 通知** — Incoming Webhooks 連携で送信内容を指定チャンネルへ即時通知 (v1.1) * **Google スプレッドシート連携** — Apps Script Web App 経由で送信内容を 1 行ずつ自動追記。Google フォームと同等の運用が可能 (v1.1) * **SMTP 送信対応** — Gmail / SendGrid / 任意の SMTP サーバーから到達率の高い送信 * **Google reCAPTCHA v2/v3** — スパム対策を標準搭載。スコアしきい値も管理画面から調整 **運用機能** * **回答データの表形式管理** — ステータス管理 (未読/既読/返信済み/アーカイブ)・CSV ダウンロード (オプトイン式・デフォルトは無効) * **期間限定受付** — プレゼント応募キャンペーンなどで、指定日時以外は送信を受け付けない機能 * **プレビューページ自動生成** — 公開前に実際のレイアウトを確認可能 * **プライバシーポリシー同意チェック** — カスタムテキスト・URL リンク・本文アコーディオン表示に対応 **日本語フォーム最適化** * **半角英数字入力の強制** — メール・電話番号・郵便番号欄で全角入力を自動で半角に変換 * **郵便番号から住所オートフィル** — 7桁の郵便番号を入力してボタンクリックで住所を自動入力 (Zipcloud API 使用、下記「外部サービスについて」参照) * **日本語フル対応** — UI・テンプレート・エラーメッセージすべて日本語 **デザインカスタマイズ** * **デザイントークン** — 角丸 / フィールドスタイル / ラベル位置 / ボタン形状 / 余白 / フォント / 必須マーク など 9 種類の構造化トークンで見た目を調整可能 (v1.2) * **テーマカラーのカスタマイズ** — プリセット8色 + 自由なカラーピッカー * **`omusubi_form_inline_css` フィルター** — テーマ・サイト固有プラグインから動的に CSS 拡張可能 (開発者向け) = 使い方はかんたん = 1. 「Omusubi」メニューから「新規フォーム作成」をクリック 2. テンプレートを選ぶか、白紙から作成 3. フィールドをドラッグ&ドロップで配置・編集 4. メール通知・デザインを設定 5. 保存してショートコードをコピー、任意のページに貼り付け = ブラウザサポート = モダンブラウザ全般 (Chrome, Firefox, Safari, Edge の最新版)。Internet Explorer はサポートしていません。 == Installation == = 自動インストール = 1. 管理画面「プラグイン → 新規追加」を開く 2. 検索窓に「Omusubi」と入力 3. 「今すぐインストール」をクリック、続いて「有効化」 = 手動インストール = 1. プラグインの zip ファイルをダウンロード 2. 管理画面「プラグイン → 新規追加 → プラグインのアップロード」で zip を選択 3. 「今すぐインストール」→「プラグインを有効化」 = 有効化後 = 左メニューに「Omusubi」が追加されます。そこから新規フォーム作成に進んでください。 == Frequently Asked Questions == = フォームをページに表示するには? = フォーム一覧の各行に表示されるショートコード `[omusubi id="1"]` をコピーして、固定ページ・投稿・ブロックエディタの「ショートコード」ブロックに貼り付けてください。 = フォームの保存先は? = フォーム定義は `{prefix}omusubi_forms` テーブル、送信された回答は `{prefix}omusubi_submissions` テーブルに保存されます (`{prefix}` はサイトのテーブル接頭辞、通常は `wp_`)。 = 自動返信メールが届きません = 1. フォームに `email` タイプのフィールドが含まれていることを確認してください 2. 「メール設定」タブで「送信者に自動返信メールを送信」が有効化されていることを確認 3. WordPress 本体の `wp_mail()` が動作している必要があります。サーバーによっては SMTP プラグイン (WP Mail SMTP 等) の併用を推奨します = 郵便番号検索はどのように動きますか? = 郵便番号フィールドの「住所検索」ボタンを押すと、ブラウザから第三者サービス (Zipcloud) の API に 7桁の郵便番号が送信され、対応する住所が返ってきます。詳しくは「外部サービスについて」の項目をご覧ください。この機能はフォーム編集画面で「対象の住所フィールド」を設定した場合のみ有効になります。 = 期間限定の応募フォームを作れますか? = はい。「メール設定」タブの「受付期間」セクションで、受付開始日時と終了日時を設定できます。期間外はフォームが表示されず、代わりに案内メッセージが表示されます。サーバー側でも検証しているため、フロントエンドのJSを迂回した直接送信もブロックされます。 = プラグインを削除するとデータはどうなりますか? = デフォルトではプラグイン削除時にテーブル・オプション・プレビューページをすべて削除します。データを残したい場合は、プラグインを削除する**前**にオプション `omusubi_keep_data_on_uninstall` を `1` に設定してください (例: WP-CLI `wp option update omusubi_keep_data_on_uninstall 1`)。 = 送信回数やスパム対策は? = 現在の 1.0.0 では、WordPress 標準の nonce 検証と必須項目チェックのみです。大量の自動送信が気になる場合は、reCAPTCHA 等のプラグインと組み合わせるか、期間限定受付機能で受付ウィンドウを絞ってください。 = 他言語で使えますか? = 翻訳テンプレート (.pot) は `languages/` に同梱されています。`omusubi-en_US.po` 等を作成して翻訳を提供いただければ、パッケージに同梱していきたいと考えています。 == Screenshots == 1. フォーム一覧 — ドラッグで並び替え、1クリックでショートコードをコピー 2. ビジュアルビルダー — ドラッグ&ドロップでフィールドを配置、右パネルで詳細設定 3. 回答一覧 — 表形式で一覧表示、ステータス管理、CSV ダウンロード == Changelog == = 1.2.2 = * プラグイン一覧の行に「ライセンス購入」リンクを追加 * Omusubi 管理画面の上部にライセンス購入のお知らせバナーを表示 (Omusubi 関連画面のみ・ユーザー毎に dismiss 可能・30 日後に再表示) * バナーから「購入済み」を選択すると今後一切表示されない (ユーザーの善意に基づくシェアウェア運用) * 機能面の変更はなく、表示のみの更新 = 1.2.1 = * プラグインメタデータを更新 — Author を "foryou, inc." に、Plugin URI を https://omusubi.uuuu.to/ に変更 * 説明文を刷新 — 「メールフォーム作成プラグイン」としての位置付けを明確化、機能リストを Slack 通知 / Google スプレッドシート連携 / デザイントークン (v1.2 新機能) を含めた構造に再整理 = 1.2.0 = * デザインタブを刷新 — 角丸・フィールドスタイル・ラベル位置・ボタン形状/スタイル・余白・フォント・必須マーク・アイコン表示の 9 種類の構造化トークンで見た目をカスタマイズ可能に * すべてのトークンはホワイトリスト方式で値を制限 (任意 CSS/JS/PHP の保存はせず、WordPress.org のレビュー方針に完全準拠) * CSS 変数 + データ属性 (`data-field-style` 等) で派生スタイルを `wp_add_inline_style` 経由で出力 (フォーム単位スコープ) * `omusubi_form_inline_css` フィルターを公開 — テーマや site-specific プラグインから動的に CSS を追加可能 (開発者向け拡張ポイント) * 既存のテーマカラー切り替えはそのまま利用可能 = 1.1.1 = * フォーム単位のカスタム CSS 入力機能を削除 (WordPress.org プラグインディレクトリのレビュー方針に準拠) * 関連する管理画面 UI / JavaScript / フロント側の `wp_add_inline_style` 出力をすべて取り除き、設定の保存パスからも `custom_css` フィールドを排除 = 1.1.0 = * Slack 通知機能を追加 — Slack Incoming Webhooks を利用してフォーム送信時に指定チャンネルへ通知 * Google スプレッドシート連携を追加 — Google Apps Script Web App 経由でフォーム送信内容を 1 行ずつ追記 (Google フォームと同等の運用が可能) * Webhook URL はホスト名ホワイトリスト方式 (保存時・送信時の二重検証) * どちらもフォーム単位で有効/無効を切替 (デフォルト無効) = 1.0.0 = * 初回リリース * ビジュアルフォームビルダー (15+ フィールドタイプ) * 12 種類のフォームテンプレート * 管理者通知・自動返信メール * 回答の表形式管理 + CSV エクスポート (オプトイン式・デフォルトは無効) * 期間限定受付機能 (プレゼント応募等で使用) * 郵便番号→住所オートフィル (Zipcloud API 連携) * 半角英数字入力の強制 (メール・電話・郵便番号) * 横2列レイアウト対応 * 条件分岐表示 * プレビューページ自動生成 * プライバシーポリシー URL / 本文アコーディオン表示 * Google reCAPTCHA v2/v3 連携 (全体設定で切り替え) * テーマカラー切り替え (プリセット + カラーピッカー) * Font Awesome Free 6.5.1 のローカルバンドル (外部 CDN 不使用) * WordPress マルチサイト対応のアンインストール処理 == Upgrade Notice == = 1.2.2 = ライセンス購入のお知らせバナーを Omusubi 管理画面に追加。dismiss 可能で、機能変更はありません。 = 1.2.1 = プラグインメタデータと説明文を整理。機能変更はありません (1.2.0 の機能セットそのまま)。 = 1.2.0 = デザインタブを刷新。角丸・フィールドスタイル・余白など 9 種類の構造化トークンで見た目をカスタマイズできるようになりました。`omusubi_form_inline_css` フィルターも追加。 = 1.1.1 = WordPress.org プラグインレビュー方針 (任意 CSS/JS/PHP の保存機能を許可しない) に従い、フォーム単位のカスタム CSS 機能を削除しました。デザインのカスタマイズは引き続きテーマカラーの切り替えで行えます。 = 1.1.0 = Slack 通知と Google スプレッドシート連携を追加。フォーム送信内容を Slack チャンネルへ通知したり、スプレッドシートに 1 行ずつ追記できるようになりました。 = 1.0.0 = 初回リリース。 == External services == このプラグインは、特定の機能を使用した場合のみ、以下の第三者サービスと通信します。 = Zipcloud (郵便番号検索 API) = **何のためのサービスか** 日本の7桁郵便番号から対応する住所 (都道府県・市区町村・町域名) を取得するための無料 API です。 **いつ通信が発生するか** エンドユーザーが、郵便番号フィールド横の「住所検索」ボタンを**手動で押したとき**のみ発生します。フォーム送信時や管理画面の読み込み時には通信しません。 **送信されるデータ** フォームに入力された7桁の郵便番号のみ。氏名・メールアドレス等の個人情報は一切送信されません。通信はエンドユーザーのブラウザから直接 Zipcloud に対して行われ、WordPress サーバーを経由しません。 **通信先** * API エンドポイント: https://zipcloud.ibsnet.co.jp/api/search **サービス提供元** 株式会社アイビス (https://zipcloud.ibsnet.co.jp/) **利用規約・プライバシーポリシー** * Terms of service: https://zipcloud.ibsnet.co.jp/rule/api * Privacy policy: https://www.ibsnet.co.jp/privacy-policy/ フォーム編集画面で郵便番号フィールドに「対象の住所フィールド」を設定していない場合、この機能は無効化され、通信は発生しません。 = Google reCAPTCHA (スパム対策) = **何のためのサービスか** Google reCAPTCHA v2 / v3 を使用してフォームのスパム送信や自動送信を検出・拒否します。 **いつ通信が発生するか** プラグインの「全体設定」画面で reCAPTCHA を有効化し、サイトキー・シークレットキーを登録した場合のみ、以下のタイミングで Google のサーバーと通信します: 1. フォームが表示されるページが読み込まれた時 (reCAPTCHA の JS が Google からロードされる) 2. ユーザーがフォームを送信した時 (ブラウザから Google にトークン検証リクエストが送信され、サーバー側でも Google の検証 API にリクエストを送る) reCAPTCHA を無効 (デフォルト) のままにしている場合、一切通信は発生しません。 **送信されるデータ** * ブラウザ → Google: ユーザーの操作情報 (クリック・マウス動作等、ボット判定のため Google が収集)、IP アドレス、ユーザーエージェント、Cookie * WordPress サーバー → Google: 送信されたトークン、管理者が入力したシークレットキー、送信者の IP アドレス **通信先** * reCAPTCHA JS: https://www.google.com/recaptcha/api.js * 検証 API: https://www.google.com/recaptcha/api/siteverify **サービス提供元** Google LLC **利用規約・プライバシーポリシー** * Terms of service: https://policies.google.com/terms * Privacy policy: https://policies.google.com/privacy * reCAPTCHA terms: https://www.google.com/recaptcha/about/ この機能はデフォルトでは無効です。管理画面で有効化した場合のみ、Google と通信します。 = Slack (フォーム送信通知 — Incoming Webhooks) = **何のためのサービスか** 管理者が指定した Slack チャンネルに、フォーム送信内容を即時通知します。Slack Incoming Webhooks を利用します。 **いつ通信が発生するか** 管理者がフォームの「メール設定 → Slack 通知」で機能を有効化し、`hooks.slack.com` の Webhook URL を登録した場合のみ、フォームが送信されたタイミングで WordPress サーバーから Slack に対して 1 回 POST します。 **送信されるデータ** * フォームに入力された内容 (フォーム編集画面で定義したフィールドの値) * 通知タイトル (管理者が設定したテンプレート) * 送信日時 訪問者の IP アドレスや User Agent は送信しません。Webhook URL は `hooks.slack.com` 以外のホストでは保存・送信されないようプラグイン側で検証しています。 **通信先** * Webhook エンドポイント: https://hooks.slack.com/services/... **サービス提供元** Slack Technologies, LLC **利用規約・プライバシーポリシー** * Terms of service: https://slack.com/terms-of-service * Privacy policy: https://slack.com/trust/privacy/privacy-policy この機能はデフォルトでは無効です。フォーム単位で有効化した場合のみ、Slack と通信します。 = Google Apps Script (Google スプレッドシート連携) = **何のためのサービスか** 管理者が Google スプレッドシート上の Apps Script で公開した Web App エンドポイントへフォーム送信内容を POST し、スプレッドシートに 1 行ずつ追記します。Google フォームと同様に、提出を時系列でリスト化できます。 **いつ通信が発生するか** 管理者がフォームの「メール設定 → Google スプレッドシート連携」で機能を有効化し、`script.google.com` の Web App URL を登録した場合のみ、フォームが送信されたタイミングで WordPress サーバーから Google Apps Script に対して 1 回 POST します。 **送信されるデータ** * フォームに入力された内容 (フィールド ID・ラベル・値の配列) * フォーム ID とフォーム名 * 送信日時 (WordPress サーバーのローカル時刻) 訪問者の IP アドレスや User Agent は送信しません。送信先 URL は `script.google.com` および `script.googleusercontent.com` 以外のホストでは保存・送信されないようプラグイン側で検証しています。 **通信先** * Apps Script Web App: https://script.google.com/macros/s/.../exec **サービス提供元** Google LLC (Google Apps Script / Google Drive) **利用規約・プライバシーポリシー** * Terms of service: https://policies.google.com/terms * Privacy policy: https://policies.google.com/privacy * Apps Script terms: https://developers.google.com/apps-script/terms この機能はデフォルトでは無効です。フォーム単位で有効化した場合のみ、Google Apps Script と通信します。 == Privacy == = プラグインが保存するデータ = * **フォーム定義** — タイトル・フィールド構成・メール設定 (`{prefix}omusubi_forms`) * **送信された回答** — 訪問者が入力したフォームデータ (`{prefix}omusubi_submissions`) * **送信元 IP アドレス** — 各送信レコードに `ip_address` として記録 (不正送信の調査用) * **User Agent** — 各送信レコードに記録 (先頭 500 文字まで) * **送信日時** — 各送信レコードのタイムスタンプ = プラグインが第三者に送信するデータ = 「外部サービスについて」の項を参照してください。基本的に、明示的なユーザー操作 (郵便番号検索ボタンの押下) なしには一切の外部送信は発生しません。 = データの削除 = * 個別の送信データは、回答一覧画面から削除できます * プラグイン削除時は、デフォルトですべてのデータ (テーブル・オプション・プレビューページ) がクリーンアップされます * GDPR 等の観点から削除要求があった場合、回答一覧で該当レコードを検索して削除してください = cookie の使用 = このプラグインは独自の cookie を設定しません。 == Credits == * アイコン: [Font Awesome Free 6.5.1](https://fontawesome.com/) (Icons: CC BY 4.0 / Fonts: SIL OFL 1.1 / Code: MIT) — プラグインにバンドルして配布 * 郵便番号 API: [Zipcloud](https://zipcloud.ibsnet.co.jp/) by 株式会社アイビス