[{"data":1,"prerenderedAt":134},["ShallowReactive",2],{"doc-wordpress":3},{"doc":4,"nav":112},{"meta":5,"toc":42,"code":51,"content":58},{"title":6,"subtitle":7,"breadcrumb":8,"breadcrumbs":9,"showHeader":18,"seoTitle":19,"seoDescription":20,"howto":21,"updated":41},"WordPress (CF7 & WPForms)","Token prüfen und Submissions blocken (deny)","Docs",[10,13,16],{"label":11,"to":12},"Start","/",{"label":14,"to":15},"Dokumentation","/docs",{"label":17},"WordPress",false,"WordPress Spamschutz: SmartCaptcha mit CF7 und WPForms","Spam in Contact Form 7 und WPForms stoppen: SmartCaptcha per Plugin oder eigenem Verify-Hook in WordPress einbinden. Unsichtbar, ohne Cookies, DSGVO-freundlich.",{"name":22,"description":23,"steps":24},"SmartCaptcha in WordPress einrichten","Widget einbinden und Formular-Übermittlungen in Contact Form 7 oder WPForms serverseitig prüfen.",[25,29,33,37],{"name":26,"text":27,"url":28},"Widget einbinden","Script-Tag mit Site-Key im Frontend laden (oder das SmartCaptcha-Plugin nutzen).","#wp-widget",{"name":30,"text":31,"url":32},"Verify-Funktion definieren","Eine Funktion, die das Token per wp_remote_post an /v1/verify schickt und bei Fehlern blockt (fail-closed).","#wp-verify",{"name":34,"text":35,"url":36},"Contact Form 7 absichern","In wpcf7_validate das Token prüfen und bei Ablehnung einen Validierungsfehler setzen.","#cf7",{"name":38,"text":39,"url":40},"WPForms absichern","In wpforms_process das Token prüfen und bei Ablehnung einen Fehler setzen.","#wpforms","2026-10-04",[43,45,47,49],{"label":44,"href":28},"Widget Einbindung",{"label":46,"href":32},"Verify Hook",{"label":48,"href":36},"CF7",{"label":50,"href":40},"WPForms",{"wpVerify":52,"wpWidget":55},{"lang":53,"body":54},"php","\u003C?php\nfunction smartcaptcha_verify_token(string $token, string $sid, string $action = 'contact'): bool {\n  $apiBase = 'https://app.smartcaptcha.de';\n  $siteKey = 'sk_...';\n  $secret  = 'sec_...';\n\n  $resp = wp_remote_post($apiBase . '/v1/verify', [\n    'timeout' => 6,\n    'headers' => [ 'Content-Type' => 'application/json' ],\n    'body' => wp_json_encode([\n      'siteKey' => $siteKey,\n      'secret'  => $secret,\n      'token'   => $token,\n      'sid'     => $sid,      // Feld smartcaptcha_sid aus dem Formular\n      'action'  => $action,   // wie data-action im Widget\n    ]),\n  ]);\n\n  if (is_wp_error($resp)) return false;\n  $code = wp_remote_retrieve_response_code($resp);\n  $body = json_decode((string) wp_remote_retrieve_body($resp), true) ?: [];\n  return ($code === 200) && !empty($body['ok']);\n}\n",{"lang":56,"body":57},"html","\u003Cscript\n  src=\"https://app.smartcaptcha.de/widget.js\"\n  data-sitekey=\"sk_...\"\n  data-action=\"contact\"\n  defer\n>\u003C/script>\n",[59,64,68,81,85,92,96,103,106],{"type":60,"id":61,"kicker":14,"title":62,"lead":63},"hero","top","WordPress Integration","Widget im Frontend + Verify beim Submit. Unterstützt CF7 und WPForms.",{"type":65,"id":66,"title":44,"subtitle":67},"sectionTitle","wp-widget","Script einmal laden (z.B. im Theme Header oder per Plugin).",{"type":69,"blocks":70},"card",[71,74,77],{"type":72,"html":73},"text","Du kannst das Widget global einbinden. Es hängt sich an Formulare (oder nur an \u003Cspan class='mono'>data-smartcaptcha\u003C/span> Formulare, wenn du das nutzt).",{"type":75,"ref":76},"code","wpWidget",{"type":78,"title":79,"html":80},"callout","Tipp","Secret bleibt immer serverseitig (wp-config ENV / Options / Server Config).",{"type":65,"id":82,"title":83,"subtitle":84},"wp-verify","Verify Funktion","Einmal definieren, dann in CF7/WPForms Hooks nutzen.",{"type":69,"blocks":86},[87,89],{"type":75,"ref":88},"wpVerify",{"type":78,"title":90,"html":91},"Fail-closed","Bei fehlendem Token oder Verify-Error → blocken (empfohlen).",{"type":65,"id":93,"title":94,"subtitle":95},"cf7","Contact Form 7 (CF7)","Submission blocken und Fehlermeldung ausgeben.",{"type":69,"blocks":97},[98,100],{"type":72,"html":99},"Hook: \u003Cspan class='mono'>wpcf7_validate\u003C/span> oder \u003Cspan class='mono'>wpcf7_before_send_mail\u003C/span>. In validate kannst du sauber eine Message setzen.",{"type":78,"title":101,"html":102},"Kurz-Konzept","Token aus \u003Cspan class='mono'>$_POST['smartcaptcha_token']\u003C/span> lesen → verify → bei false Validation Fehler.",{"type":65,"id":104,"title":50,"subtitle":105},"wpforms","Validate Hook nutzen und Submission verhindern.",{"type":69,"blocks":107},[108,110],{"type":72,"html":109},"Hook: \u003Cspan class='mono'>wpforms_process\u003C/span> / \u003Cspan class='mono'>wpforms_process_validate\u003C/span>.",{"type":78,"title":101,"html":111},"Wenn verify false → \u003Cspan class='mono'>wpforms()->process->errors\u003C/span> setzen.",[113,119,121,125,130],{"slug":114,"title":115,"subtitle":116,"category":117,"order":118},"integration","Integration","Widget einbinden → Token → Server Verify","Allgemein",999,{"slug":120,"title":6,"subtitle":7,"category":117,"order":118},"wordpress",{"slug":122,"title":123,"subtitle":124,"category":117,"order":118},"api","API Referenz","challenge & verify – Requests, Responses, Fehlercodes",{"slug":126,"title":127,"subtitle":128,"category":117,"order":129},"datenschutz","Datenschutz","Textbaustein für deine Datenschutzerklärung und der Auftragsverarbeitungsvertrag",4,{"slug":131,"title":132,"subtitle":133,"category":117,"order":118},"troubleshooting","Troubleshooting","Häufige Probleme & schnelle Fixes",1791148860352]