// ========================================== // 三階松テイクアウト:送信制限(月曜定休・火曜昼) // ========================================== add_filter('wpcf7_validate_date', 'sgm_cf7_takeout_validation', 10, 2); add_filter('wpcf7_validate_date*', 'sgm_cf7_takeout_validation', 10, 2); add_filter('wpcf7_validate_select', 'sgm_cf7_takeout_validation', 10, 2); add_filter('wpcf7_validate_select*', 'sgm_cf7_takeout_validation', 10, 2); function sgm_cf7_takeout_validation($result, $tag) { $name = $tag->name; // 日付のチェック if ($name == 'pickup_date') { $value = isset($_POST[$name]) ? $_POST[$name] : ''; if ($value) { $day = (int) date('w', strtotime($value)); if ($day === 1) { // 月曜日 $result->invalidate($tag, "月曜日は定休日です。別の日を選択してください。"); } } } // 時間のチェック if ($name == 'pickup_time') { $date_val = isset($_POST['pickup_date']) ? $_POST['pickup_date'] : ''; $time_val = isset($_POST['pickup_time']) ? $_POST['pickup_time'] : ''; if ($date_val && $time_val) { $day = (int) date('w', strtotime($date_val)); $hour = (int) substr($time_val, 0, 2); // 火曜日(2) かつ 17時より前 if ($day === 2 && $hour < 17) { $result->invalidate($tag, "火曜日の昼は受取不可です。17:00以降を選択してください。"); } } } return $result; } // ✉️ 元の注文処理フックを呼び出す(必要に応じて変更可) do_action('sgm_takeout_order_process'); } /** * 三階松 テイクアウト注文システム:送信制限 * バリデーション:月曜定休、火曜17時以降、水〜日15-17時制限 */ add_filter('wpcf7_validate_date', 'sgm_cf7_takeout_validation', 10, 2); add_filter('wpcf7_validate_date*', 'sgm_cf7_takeout_validation', 10, 2); add_filter('wpcf7_validate_select', 'sgm_cf7_takeout_validation', 10, 2); add_filter('wpcf7_validate_select*', 'sgm_cf7_takeout_validation', 10, 2); function sgm_cf7_takeout_validation($result, $tag) { $name = $tag->name; // 日付フィールドのチェック(pickup-date / pickup_date 両対応) if ($name == 'pickup-date' || $name == 'pickup_date') { $value = isset($_POST[$name]) ? $_POST[$name] : ''; if ($value) { $day = (int) date('w', strtotime($value)); if ($day === 1) { // 月曜日 $result->invalidate($tag, "月曜日は定休日です。別の日を選択してください。"); } } } // 時間フィールドのチェック(pickup-time / pickup_time 両対応) if ($name == 'pickup-time' || $name == 'pickup_time') { $date_name = (isset($_POST['pickup-date'])) ? 'pickup-date' : 'pickup_date'; $date_val = isset($_POST[$date_name]) ? $_POST[$date_name] : ''; $time_val = isset($_POST[$name]) ? $_POST[$name] : ''; if ($date_val && $time_val) { $day = (int) date('w', strtotime($date_val)); $hour = (int) substr($time_val, 0, 2); if ($day === 2 && $hour < 17) { $result->invalidate($tag, "火曜日の昼は受取不可です。17:00以降を選択してください。"); } if ($day !== 1 && $day !== 2) { if ($hour >= 15 && $hour < 17) { $result->invalidate($tag, "15:00〜17:00は準備時間のため受取不可です。"); } } } } return $result; }