Shed Form

無料

確認画面・スパム対策・送信履歴機能を備えた、日本語サイト向け WordPress お問い合わせフォームプラグインです。

対応: WordPress 6.0〜6.9.4  / PHP 8.1以上

スクリーンショット

使い方

確認画面と営業・売り込みをブロックしたお問い合わせフォームのプラグインです。


フィールド設定

左側にビジュアルで項目設定を行い、右側のプレビューを見ながら項目を調整していきます。

バリデーションチェックについて、いくつか最初からありますが正規表現でカスタム設定を行なうことが可能です。

フィールド設定画面1
フィールド設定画面2

メール設定

管理者とフォーム登録者に自動送信するメールの設定を行なうことができます。

メール設定画面

基本設定

フォームの基本設定です。レイアウト、完了メッセージボタン名称、送信履歴、受付番号などの設定が可能です。
スパム対策として「Cloudflare Turnstile」の利用が可能です。
その他、セキュリティ設定で、独自のスパム判定機能を実装しています。

基本設定画面

デモ

お名前 必須
フリガナ 必須
メールアドレス 必須
メールアドレス(確認) 必須
郵便番号・都道府県 必須
市区町村・番地 必須
建物名・部屋番号 任意
電話番号 任意
お問い合わせ種別 任意
お問い合わせ内容 必須
個人情報の取り扱い 必須
利用規約 必須

主な機能

フォームビルダー

  • ドラッグ&ドロップでフィールドを自由に並び替え
  • 行レイアウトの列構成を自由に変更(1列〜4列・カスタム比率)
  • リアルタイムプレビューで確認しながら編集

フィールドタイプ(12種類)

  • テキスト/テキストエリア/メールアドレス/電話番号/数値
  • 日付/セレクトボックス/ラジオボタン/チェックボックス
  • ファイル添付/同意チェックボックス/隠しフィールド

レイアウト

  • テーブル型・スタック型・インライン型・DL型の4スタイルに対応
  • スマートフォンでは自動的に縦積みレイアウトに切り替え

バリデーション

  • 必須チェック・文字数制限・メール形式・電話番号形式
  • ひらがな/カタカナ/全角/半角のみなど文字種チェック
  • 生年月日・郵便番号・URL形式
  • メールアドレス確認(2回入力)・キャリアメール除外
  • 複数のバリデーションルールを組み合わせて設定可能

便利機能

  • 郵便番号入力で住所を自動入力(zipcloud API使用)
  • 条件分岐:選択値に応じてフィールドを表示/非表示
  • 受付番号の自動採番(プレフィックス・桁数を設定可能)

メール送信

  • 管理者通知メール・自動返信メールをテンプレートで自由に設定
  • CC/BCC対応・差出人名/メールアドレスの変更
  • テンプレート変数で入力内容をメールに埋め込み
  • 送信失敗時のログ記録・管理画面から再送信

スパム対策

  • Cloudflare Turnstile統合(ユーザー操作不要のBOT対策)
  • レート制限(同一IPからの連続送信を制限)
  • IPブロックリスト
  • スコアリング方式のコンテンツフィルタリング
  • 日本語判定・NGフレーズ検出(正規表現対応)
  • 営業・売り込みメールのサイレントブロック

送信履歴管理

  • 送信データをデータベースに保存
  • ステータス管理(未読/既読/対応済み)
  • 内部メモ機能(対応履歴を記録)
  • キーワード・期間・ステータスで絞り込み
  • CSV出力(Excel対応・UTF-8 BOM付き)
  • メール送信ログ・再送信機能

更新履歴

v1.10.0
  • 追加: フォームごとにカラーピッカーで配色を設定できる機能を追加(ラベル背景・文字色・枠線色・バッジ色)
  • 追加: フォームごとにカスタム CSS を設定できる textarea を追加(基本設定タブ)
  • 変更: フォームラッパーに data-shedform-id 属性を追加し、複数フォーム設置時のスタイル干渉を防止
  • 変更: バッジ色を CSS カスタムプロパティ(--shedform-required-bg 等)で定義するよう変更
v1.9.0
  • 追加: 送信履歴一覧に「全件削除」ボタンを追加(確認ダイアログあり・フォーム絞り込み対応・添付ファイルも削除)
v1.8.1
  • 🔧 修正: 設定タブの TinyMCE エディター内容変更がプレビューに反映されない問題を修正(AddEditor イベントを使用して非同期初期化に対応)
  • 🔧 修正: 離脱警告が保存ボタンのクリックを正しく検知できていなかった問題を修正(メール保存・設定保存・レイアウト保存の全ボタンに対応)
  • 変更: 新規フォームのデフォルトレイアウトをテーブル型からDL型に変更
  • 変更: 新規フォームのデフォルト最大幅を800pxから100%に変更
  • 変更: レイアウト保存ボタンにツールチップを追加し、保存対象の設定項目を明示
v1.8.0
  • 🔧 修正: DL 型・テーブル型フォームのモバイル表示で右端がはみ出す問題を修正(box-sizing: border-box・display: block !important を追加)
  • 🔧 修正: DL 型のモバイル右端はみ出しをさらに修正(overflow:hidden・max-width:100% を row・row-inner・dt・dd に追加、プレビュー body に overflow-x:hidden を追加)
  • 🔧 修正: プレビューペインでスクロールバーの有無によってフォーム幅がぶれる問題を修正(scrollbar-gutter: stable を適用)
  • 変更: AJAX 接続テストボタンと案内を、フォーム個別ページから「設定」ページに移動
v1.7.23
  • 追加: フォーム編集画面に AJAX 接続テストボタンを追加(admin-ajax.php への疎通確認ツール)
v1.7.22
  • 🔧 修正: 差出人メールアドレス・Reply-To の保存時に {domain} などのテンプレート変数が消去される問題を修正
v1.7.21
  • 🔧 修正: ファイル添付スロット UI の「ファイルを選択」「このファイルを削除」が JS 内日本語直書きになっていた問題を修正(wp_localize_script 経由に変更)
  • 🔧 修正: 受付終了メッセージのフォールバック文字列を翻訳可能な文字列に変更
  • 🔧 修正: NG フレーズ API URL をフィルター(shedform_phrases_api_url)で上書き可能に変更
v1.7.20
  • 🔧 修正: ファイル削除ボタンが楕円になっていた問題を修正(正円の赤いボタンに変更)
v1.7.19
  • 改善: ファイル添付 UI をスロット方式に刷新。ファイルごとに個別の入力欄と削除ボタン(×)を表示。上限未満の場合は「+ ファイルを追加」ボタンを表示
v1.7.18
  • 追加: 受付番号(シリアル番号)のリセット・任意スタート機能。フォーム編集画面の「次の受付番号」欄から変更可能
v1.7.17
  • 🔧 修正: 受付番号の DB 更新後にキャッシュを無効化し、同一リクエスト内で古い値を参照しない問題を修正
  • 🔧 修正: ラジオ・チェックボックスの条件分岐が先頭の選択肢にしか反応しない問題を修正
  • 🔧 修正: 新形式のバリデーション設定で郵便番号自動補完・maxlength が機能しない問題を修正
  • 🔧 修正: 管理画面スパムテストパネルで NG フレーズが未エスケープだった問題を修正(XSS 対策)
  • 🔧 修正: ファイルフィールドの必須バリデーションがサーバー側でスキップされていた問題を修正
  • 🔧 修正: ファイル拒否(種類・サイズ違反)時にエラーなく次の画面へ進んでいた問題を修正
  • 🔧 修正: レート制限カウントの増加タイミングを、セッション検証通過後に変更
v1.7.16
  • 🔧 修正: email_confirm バリデーションで大文字・小文字の違いにより不一致と判定される問題を修正
  • 🔧 修正: POST データからフィールドキーを意図的に除外することで必須バリデーションを回避できる問題を修正
v1.7.14
  • 追加: セキュリティ設定に「スパム判定を無効にする」オプションを追加(メールアドレスのみのフォーム等で有用)
v1.7.13
  • 🔧 修正: 「日本語なし」スパムスコアの対象をテキスト・テキストエリアフィールドのみに限定(メールアドレス専用フォームで誤判定されていた問題を修正)
v1.7.12
  • 🔧 修正: NG フレーズによるスパムスコアが、フォームごとの設定ではなくデフォルト値を参照していた問題を修正
v1.7.11
  • 🔧 修正: フォームエディターの行追加ボタンとフィールド保存ボタンを連打しても重複登録されないよう制御を追加
v1.7.10
  • 🔧 修正: 同一 IP の繰り返し送信スパムスコアのしきい値が、レートリミットの最大送信回数設定に連動するよう修正(従来はハードコードの 5 件固定)
  • 追加: スパム判定スコア設定の下に判定の仕組みを説明するガイドを追加
  • 🔧 修正: メールログ全件削除クエリの Plugin Check 警告を phpcs:ignore で抑制
v1.7.9
  • 🔧 修正: 同一ページに同一フォームのショートコードが複数ある場合に確認画面が表示されない問題を修正
v1.7.8
  • 🔧 修正: 同一ページに同一フォームのショートコードが複数ある場合に「セッションが切れました」エラーが発生する問題を修正
  • 追加: メール送信履歴ページに全件削除ボタンを追加
v1.7.7
  • 🔧 修正: 同一ページに同一フォームのショートコードが複数ある場合に Turnstile トークンが二重送信され timeout-or-duplicate エラーになる問題を修正
v1.7.6
  • 🔧 修正: Shed Turnstile が有効なときの設定ページへのリンクが誤ったスラッグを指していた問題を修正
v1.7.5
  • 🔧 修正: スタック型レイアウトの確認画面でラベル列が正しい幅で表示されない問題を修正
v1.7.4
  • WordPress 7.0 との互換性を確認
v1.7.3
  • 🔧 修正: 送信データを削除した際にアップロードファイルと DB レコードも合わせて削除するよう修正(個人情報がサーバーに残留するのを防止)
  • 🔧 修正: cron によるファイルクリーンアップが年月サブディレクトリを再帰的にスキャンするよう修正
  • 🔧 修正: メール設定保存ハンドラの冗長な wp_unslash() 呼び出しを削除
  • 🔧 修正: コンソールログのプレフィックスを [WSF] から [Shed Form] に更新
v1.7.2
  • 🔧 修正: dataset 属性名の不一致(wsf → shedform プレフィックス)により郵便番号自動補完・条件分岐・同意スクロールが動作しない問題を修正
  • 🔧 修正: Turnstile 検証失敗時にエラーメッセージを表示せずフォームが再描画される問題を修正
  • 🔧 修正: 設定保存ハンドラの冗長な wp_unslash() 呼び出しを削除
  • 🔧 修正: フォーム削除時に関連する行レコードも削除するよう修正
  • 🔧 修正: error_log() の呼び出しを WP_DEBUG が有効な場合のみ実行するよう変更
  • 🔧 修正: クラウドフレーズの version 値を保存前にサニタイズするよう修正
  • 🔧 修正: 無効な正規表現パターンを含むクラウドフレーズをキャッシュ前にフィルタリング(ReDoS 対策)
  • 🔧 修正: ライセンスヘッダー表記を GPL-2.0-or-later に統一
v1.7.1
  • 🔧 修正: フレーズに正規表現パターンが含まれる場合に NG フレーズリストが保存されない問題を修正(二重 wp_unslash による JSON 破損)
  • 🔧 修正: フレーズ配列が空のとき syncJson() が呼ばれず「全クリア」が反映されない問題を修正
v1.7.0
  • 追加: フォーム編集ページにショートコードコピーボタンを追加
  • 追加: フォームごとの最大幅設定(form_max_width)を追加
  • 追加: デフォルト NG フレーズに「協業」「情報交換」を追加
  • 🔧 変更: NG フレーズの種別ラベルを「完全一致」から「部分一致(含む)」に変更(実際の挙動に合わせて修正)
v1.6.23
  • 🔧 修正: FAQ から特定のアドオン名を削除(現在の提供状況に合わせて更新)
v1.6.22
  • 🔧 修正: サードパーティサービスセクションの WP Shed NG フレーズサービスのプライバシーポリシー URL を修正
v1.6.8
  • コード品質: ajax_save_field() の JSON フィールド(options/validation/extras)から wp_kses_post() を削除 — 角括弧を含む正規表現パターンが意図せず変換されるのを防止
  • コード品質: nonce のサニタイズを sanitize_key() から sanitize_text_field() に変更(WPCS 準拠)
  • 🔧 修正: 送信一覧ページの $_GET['status'] 直接参照をサニタイズ済み変数 $filter_status に変更
v1.6.7
  • セキュリティ: セッショントークンにフォーム ID を紐付け — 別フォームのトークンの流用を防止
  • セキュリティ: セッショントークンを DB 書き込み後ではなく取得直後に削除 — 最大 1 時間のリプレイ攻撃ウィンドウを解消
  • セキュリティ: テキストエリアの入力をサーバー側で 20,000 文字に制限 — 過大入力による DoS を防止
  • セキュリティ: NG ワードのマッチングをフィールド単位でも実施 — 文字列を分割した回避リスクを低減
  • セキュリティ: 拡張子を複数連ねたファイル名のアップロードを拒否(例: shell.php.jpg)
  • 追加: ハニーポット隠しフィールド — 不可視フィールドに入力したボットをスパムスコアに関係なくブロック
v1.6.6
  • セキュリティ: 差出人の表示名を RFC 2047 MIME エンコード(mb_encode_mimeheader)で処理 — マルチバイト文字・特殊文字によるヘッダーインジェクションを防止
  • セキュリティ: admin_email_to を is_email() で検証し CRLF 除去後に wp_mail() へ渡すよう変更
  • セキュリティ: 再送メールの CC / BCC を DB から復元後に is_email() で再検証・CRLF 除去
  • セキュリティ: ajax_download_file() のパスチェックに DIRECTORY_SEPARATOR の末尾を追加 — 隣接ディレクトリへのパス突破を防止
  • セキュリティ: 管理者通知・自動返信の両メール件名でプラグイン層でも CRLF を除去
  • パフォーマンス / セキュリティ: CSV エクスポートを 500 件単位のバッチストリーミング方式に変更 — 大量データでのメモリ消費を防止し、キーワードフィルタを SQL 層に移動
v1.6.5
  • 🔧 修正: CSV インジェクション対策 — =・+・-・@ で始まるフィールド値に CSV エクスポート時にシングルクォートを付与
  • セキュリティ: {page_url} タグを $_SERVER['HTTP_HOST'] から home_url() に変更 — ホストヘッダーインジェクションを防止
  • セキュリティ: ReDoS 検証をニアミス文字列でも実施。PCRE 制御動詞(*LIMIT_BACKTRACK 等)を保存時に拒否
  • セキュリティ: 全正規表現ガードに pcre.recursion_limit を追加。try/finally で制限値を確実に復元
  • セキュリティ: フィールドバリデーションの pattern ルールに ReDoS ガードを適用
  • 🔧 修正: set_attachments() のパスチェックに DIRECTORY_SEPARATOR の末尾を追加 — shedform-uploads プレフィックス突破を防止
  • セキュリティ: 管理画面ハンドラの残りの $_POST アクセスに wp_unslash() を追加
v1.6.4
  • セキュリティ: ReDoS 対策 — NG ワード正規表現を長さ 500 文字制限・pcre.backtrack_limit ガードで検証。無効なパターンはスキップし error_log に記録
  • セキュリティ: X-Forwarded-For IP スプーフィング対策 — プロキシ経由時は最右端の IP を使用
  • セキュリティ: メール添付ファイルのパストラバーサル防止 — set_attachments() で realpath() により shedform-uploads ベースディレクトリ外を拒否
v1.6.3
  • セキュリティ: アップロードサブディレクトリ(フォーム ID / 年 / 月)の作成時に .htaccess と index.php 保護を追加
  • セキュリティ: Content-Disposition ヘッダーを RFC 5987(filename*=UTF-8)形式に変更 — 日本語ファイル名を正しく処理
  • 🔧 修正: ALTER TABLE マイグレーションクエリに phpcs:ignore を追記(ユーザー入力なし・WPCS 準拠)
v1.6.2
  • 🔧 修正: XSS 対策 — {url_param} 動的タグを sanitize_text_field() のみから wp_kses() に変更
  • 🔧 修正: XSS 対策 — {page_title} 動的タグを esc_html() でエスケープ
  • セキュリティ: ファイルアップロード — finfo_file() 利用不可時は MIME チェックをスキップせずアップロードを拒否
  • セキュリティ: ファイルアップロード — クライアントの Content-Type ではなく実際の MIME タイプを wp_handle_upload() に渡すよう変更
  • セキュリティ: ファイルアップロード — $_FILES['size'] ではなくサーバー側で filesize() によりファイルサイズを計測
  • セキュリティ: フォーム入力処理の全 $_POST アクセスに wp_unslash() を追加(WPCS 準拠)
  • 🔧 修正: 同意フィールドのスクロールコンテンツで二重エスケープを解消(wp_kses_post() 内の冗長な esc_html() を削除)
v1.6.1
  • プラグインスラッグを shed-form に統一(WordPress.org 申請対応)
v1.6.0
  • WordPress.org ディレクトリ対応のため GPL-2.0+ ライセンスを追加
  • wp_add_privacy_policy_content によるプライバシーポリシー提案を追加
  • readme.txt にサードパーティサービス開示セクションを追加
  • NG ワードクラウドの更新を自動 cron から手動ボタンへ変更
  • SortableJS を CDN からローカルバンドルに変更
  • 国際化対応: すべてのハードコードされた日本語文字列を __() でラップ
  • .pot ファイルを生成し翻訳サポートを追加
v1.5.4
  • 🔧 修正: 管理者通知・自動返信メールの Reply-To プレースホルダー展開を修正
  • 改善: フィールドキーのメールプレースホルダー処理を改善
v1.5.3
  • 追加: スクロールで有効化するコンセントフィールドタイプ
  • 改善: 設定クラスの静的キャッシュでデータベースクエリを削減
v1.5.1
  • 🔧 修正: Turnstile 認証が完了するまで送信ボタンを無効化
  • セキュリティ: PHP セッションを WordPress トランジェントとワンタイムトークンに置き換え

よくある質問

インストール・設定

機能・使い方

セキュリティ