HDWebmobile 予約&アポイントメント
WooCommerceを通じて予約可能なサービスやアポイントメントを販売できます。スロットごとの定員を設定でき、定員を超えて販売されることは決してありません。
説明
HDWebmobile 予約&アポイントメントは、あらゆるシンプルなWooCommerce商品を予約可能なサービスに変えます。顧客は商品ページで利用可能な日付と時間枠を選択し、注文が完了した時点で予約が確定します。その後、マイアカウントから予約の確認やキャンセルが可能です。
このプラグインが存在する理由
競合する予約プラグイン(Amelia)には、認証済みIDOR/マスアサインメントの脆弱性(CVE-2026-2931、CVSS 8.8)がありました。その「予約プロフィール更新」エンドポイントは、クライアントが提供するフィールドを受け入れ、予約レコードをWordPressユーザーIDにリンクさせていましたが、それがリクエスト元自身のアカウントを指しているかどうかのチェックがありませんでした。これにより、低権限の顧客が任意のWordPressユーザー(管理者を含む)のパスワードをリセットできてしまいました。このプラグインは、設計上この脆弱性クラスを排除しています。
- 予約の所有者は、注文完了時(注文自体の顧客IDから)の1箇所のみで書き込まれ、その後は二度と変更されません。このプラグインには、リクエストから顧客ID、ユーザーID、または類似のフィールドを受け入れる「予約更新」コードパスは一切存在しません。
- このプラグインはWordPressのパスワードには一切触れません。
wp_set_password() やそれに類するものを呼び出すコードパスはここにはまったく存在せず、顧客のパスワードはWordPressコア自身の「アカウント詳細」画面に完全に委ねられています。
- 顧客は自分の予約のみを表示・キャンセルでき、データベースクエリ自体でログイン中のアカウントに基づいてスコープが制限されます。リクエストから取得したIDによって制限されることは決してありません。
- スロットごとの定員は、アトミックで競合状態に安全なクレーム(データベースの一意性制約)によって強制されるため、設定された定員を超えて2人の顧客が同じスロットに同時に確定することは決してありません。予約をキャンセルすると、そのスロットは正しく再利用のために解放されますが、キャンセルされた行自体は監査履歴として保持されます。
機能
- 任意のシンプルな商品を、その商品データ > 予約タブから予約可能なサービスに変換
- 利用可能な曜日、時間枠、リードタイム、および提供する先読み日数を設定可能
- スロットごとの定員 — 満員になるとそのスロットの提供は停止
- 注文が「完了」とマークされると予約が自動的に確定
- マイアカウントの「予約」タブで今後の予約を表示・キャンセル可能
- カート追加からチェックアウトまでの間にスロットが満員になった場合でも、注文は通常どおり完了し、管理者に再スケジュールのためのメールが送信されます — 予約が二重に確定することは決してありません
制限事項(v1)
- シンプルな商品のみ対応 — バリエーション商品には非対応
- スタッフ/リソースの割り当てなし — スロットの定員は単一の共有数値であり、スタッフメンバーごとではありません
- カレンダー同期なし(Googleカレンダー、iCalなど)
インストール
- プラグインを
/wp-content/plugins/hdwebmobile-booking-appointments にアップロードするか、WordPressのプラグイン画面からインストールします。
- プラグインを有効化します。WooCommerceがすでにインストールされ、有効化されている必要があります。
- シンプルな商品を編集し、商品データの下にある新しい「予約」タブを開いて、利用可能性を設定します。
ライセンス
GPLv2 以降。 LICENSE を参照してください。