Shed Form

無料

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

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

スクリーンショット

使い方

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


フィールド設定

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

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

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

メール設定

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

メール設定画面

基本設定

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

基本設定画面

デモ

[wsf_demo_dl]

主な機能

フォームビルダー

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

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

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

レイアウト

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

バリデーション

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

便利機能

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

メール送信

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

スパム対策

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

送信履歴管理

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

更新履歴

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 トランジェントとワンタイムトークンに置き換え

よくある質問

インストール・設定

機能・使い方

セキュリティ