safeLoad(); } public function initFrontend() { add_action('wp_enqueue_scripts', [$this, 'enqueue']); add_action('wp_ajax_nopriv_stepper_submit', [$this, 'onSubmit']); add_action('wp_ajax_stepper_submit', [$this, 'onSubmit']); add_action('wp_footer', [$this, 'enqueueOverwrite']); if (!is_admin()) { add_shortcode('stepper', [$this, 'handle']); } } public function enqueueOverwrite(): void { if (is_admin()) { return; } ob_start(); require(__DIR__ . '/../templates/overwrite.htm'); echo ob_get_clean(); } public function enqueue() { wp_enqueue_script('stepper-js', $this->scriptUrl . 'app.js', [], false, true); wp_enqueue_style('stepper-css', $this->scriptUrl . 'app.css'); } public function handle() { require(__DIR__ . '/../templates/stepper.htm'); } public function validate($payload) { $errors = []; if (!$payload['datenschutz']) { $errors['datenschutz'] = 'Bitte akzeptieren Sie die Datenschutzerklärung.'; } if (!$payload['firstname']) { $errors['firstname'] = 'Bitte füllen Sie dieses Feld aus.'; } if (!$payload['lastname']) { $errors['lastname'] = 'Bitte füllen Sie dieses Feld aus.'; } if (!$payload['phone']) { $errors['phone'] = 'Bitte füllen Sie dieses Feld aus.'; } if (!$payload['email']) { $errors['email'] = 'Bitte füllen Sie dieses Feld aus.'; } if ($payload['email'] && !filter_var($payload['email'], FILTER_VALIDATE_EMAIL)) { $errors['email'] = 'Dies ist keine richtige E-Mail-Adresse'; } return $errors; } public function onSubmit() { $client = new Client(); $payload = json_decode(file_get_contents('php://input'), true); $client->post(STEPPER_URL, [ 'json' => $payload, 'headers' => [ 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . STEPPER_TOKEN, ] ]); } }