{"id":895,"date":"2024-09-19T09:36:40","date_gmt":"2024-09-19T08:36:40","guid":{"rendered":"http:\/\/ghanim-solution.de\/?p=895"},"modified":"2024-09-19T09:42:16","modified_gmt":"2024-09-19T08:42:16","slug":"erstellen-eines-benutzerdefinierten-kontaktformulars-in-wordpress-ohne-plugin","status":"publish","type":"post","link":"https:\/\/ghanim-solution.de\/index.php\/2024\/09\/19\/erstellen-eines-benutzerdefinierten-kontaktformulars-in-wordpress-ohne-plugin\/","title":{"rendered":"Erstellen eines benutzerdefinierten Kontaktformulars in WordPress ohne Plugin"},"content":{"rendered":"\n<p>In diesem Beitrag zeige ich, wie man ein einfaches und sicheres Kontaktformular in WordPress ohne die Verwendung eines Plugins erstellt. Wir verwenden ein HTML-Formular, PHP f\u00fcr die Formularverarbeitung und einige grundlegende CSS-Stile f\u00fcr die Darstellung des Formulars.<\/p>\n\n\n\n<p class=\"has-large-font-size\">1. <strong>HTML-Kontaktformular<\/strong><\/p>\n\n\n\n<p>Zuerst erstellen wir das HTML-Formular, das die Benutzereingaben sammelt und an die WordPress-Admin-Seite sendet. Hier ist der Code:<\/p>\n\n\n\n<pre><code class=\"language-html\">\n&lt;form action=&quot;\/wp-admin\/admin-post.php&quot; method=&quot;POST&quot;&gt;\n    &lt;!-- Vorname und Nachname --&gt;\n    &lt;fieldset&gt;\n        &lt;legend&gt;Kontaktformular&lt;\/legend&gt;\n\n        &lt;label for=&quot;first_name&quot;&gt;Vorname*:&lt;\/label&gt;\n        &lt;input type=&quot;text&quot; id=&quot;first_name&quot; name=&quot;first_name&quot; required&gt;\n        \n        &lt;label for=&quot;last_name&quot;&gt;Nachname*:&lt;\/label&gt;\n        &lt;input type=&quot;text&quot; id=&quot;last_name&quot; name=&quot;last_name&quot; required&gt;\n    &lt;\/fieldset&gt;\n\n    &lt;!-- E-Mail-Adresse --&gt;\n    &lt;fieldset&gt;\n        &lt;label for=&quot;email&quot;&gt;E-Mail*:&lt;\/label&gt;\n        &lt;input type=&quot;email&quot; id=&quot;email&quot; name=&quot;email&quot; required&gt;\n    &lt;\/fieldset&gt;\n\n    &lt;!-- Nachricht --&gt;\n    &lt;fieldset&gt;\n        &lt;label for=&quot;message&quot;&gt;Nachricht*:&lt;\/label&gt;\n        &lt;textarea id=&quot;message&quot; name=&quot;message&quot; rows=&quot;4&quot; required&gt;&lt;\/textarea&gt;\n    &lt;\/fieldset&gt;\n\n    &lt;!-- Nonce-Feld (f\u00fcr die Sicherheit) --&gt;\n        &#91;contact_form_nonce&#93;\n\n    &lt;!-- Unsichtbares Eingabefeld zur Identifikation der Aktion --&gt;\n    &lt;input type=&quot;hidden&quot; name=&quot;action&quot; value=&quot;send_contact_form&quot;&gt;\n\n    &lt;!-- Absenden-Button --&gt;\n    &lt;button type=&quot;submit&quot;&gt;Senden&lt;\/button&gt;\n&lt;\/form&gt;\n<\/code><\/pre>\n\n\n\n\n<p class=\"has-large-font-size\">2. <strong>PHP-Code zur Formularverarbeitung (functions.php)<\/strong><\/p>\n\n\n\n<p>Der n\u00e4chste Schritt ist die Formularverarbeitung. Dies geschieht durch eine Funktion in der <code>functions.php<\/code>, die sicherstellt, dass das Formular sicher verarbeitet wird.<\/p>\n\n\n\n<pre><code class=\"language-php\">\n\/\/ Funktion zum Erstellen des Nonce-Felds f\u00fcr die Formularsicherheit\nfunction add_contact_form_nonce() {\n    \/\/ Erzeugt ein Nonce-Feld im Formular, um es vor CSRF-Angriffen zu sch\u00fctzen\n    return wp_nonce_field( 'send_contact_form_action', 'contact_form_nonce', true, false );\n}\n\n\/\/ Shortcode erstellen, um das Nonce-Feld an einer bestimmten Stelle im Formular einzuf\u00fcgen\nadd_shortcode( 'contact_form_nonce', 'add_contact_form_nonce' );\n\n\/\/ Hooks f\u00fcr die Formularverarbeitung\nadd_action( 'admin_post_nopriv_send_contact_form', 'process_contact_form' );\nadd_action( 'admin_post_send_contact_form', 'process_contact_form' );\n\n\/\/ Funktion zur Formularverarbeitung\nfunction process_contact_form() {\n    \/\/ \u00dcberpr\u00fcft die Sicherheit durch Validierung des Nonce\n    if ( isset( $_POST['contact_form_nonce'] ) && wp_verify_nonce( $_POST['contact_form_nonce'], 'send_contact_form_action' ) ) {\n        \/\/ Sanitize-Eingabedaten, um Sicherheitsrisiken zu minimieren\n        $first_name = sanitize_text_field( $_POST['first_name'] );\n        $last_name = sanitize_text_field( $_POST['last_name'] );\n        $email = sanitize_email( $_POST['email'] );\n        $message = sanitize_textarea_field( $_POST['message'] );\n\n        \/\/ E-Mail an den Admin senden\n        $to = 'example@gmail.com'; \/\/ Die E-Mail-Adresse des Admins\n        $subject = 'Neue Kontaktanfrage von ' . $first_name . ' ' . $last_name;\n        $body = \"Vorname: $first_name\\nNachname: $last_name\\nE-Mail: $email\\nNachricht:\\n$message\";\n        $headers = array('Content-Type: text\/plain; charset=UTF-8');\n        wp_mail( $to, $subject, $body, $headers );\n\n        \/\/ Best\u00e4tigungs-E-Mail an den Absender senden\n        $confirmation_subject = 'Best\u00e4tigung: Ihre Nachricht wurde erfolgreich gesendet';\n        $confirmation_body = \"Hallo $first_name,\\n\\nVielen Dank f\u00fcr Ihre Nachricht. Wir werden uns bald bei Ihnen melden.\\n\\nIhre Nachricht war:\\n$message\";\n        wp_mail( $email, $confirmation_subject, $confirmation_body, $headers );\n\n        \/\/ Weiterleitung zur Danke-Seite\n        wp_safe_redirect( home_url( '\/index.php\/danke\/' ) );\n        exit();\n    } else {\n        \/\/ Fehlerbehandlung bei ung\u00fcltigem Nonce\n        wp_safe_redirect( home_url( '\/index.php\/kontakt\/?status=error' ) );\n        exit();\n    }\n}\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading has-large-font-size\">3. <strong>CSS zur Anpassung des Formular-Designs<\/strong><\/h4>\n\n\n\n<p>Hier ist der benutzerdefinierte CSS-Code, um das Formular ansprechender zu gestalten:<\/p>\n\n\n\n<pre><code class=\"language-css\">\n\/* Stil f\u00fcr das gesamte Formular *\/\nform {\n    max-width: 600px;\n    margin: 0 auto;\n    padding: 20px;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    background-color: #f9f9f9;\n}\n\n\/* Stil f\u00fcr die Fieldsets *\/\nfieldset {\n    border: none;\n    margin-bottom: 20px;\n    padding: 0;\n}\n\n\/* Stil f\u00fcr die Labels *\/\nlabel {\n    display: block;\n    margin-bottom: 5px;\n    font-weight: bold;\n}\n\n\/* Stil f\u00fcr die Eingabefelder *\/\ninput[type=\"text\"],\ninput[type=\"email\"],\ntextarea {\n    width: 100%;\n    padding: 10px;\n    border: 1px solid #ddd;\n    border-radius: 4px;\n    box-sizing: border-box;\n}\n\n\/* Stil f\u00fcr den Absenden-Button *\/\nbutton {\n    background-color: #0073aa;\n    color: #fff;\n    border: none;\n    padding: 10px 20px;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 16px;\n    transition: background-color 0.3s;\n}\n\n\/* Stil f\u00fcr den Button im Hover-Zustand *\/\nbutton:hover {\n    background-color: #005177;\n}\n\n<\/code><\/pre>\n\n\n\n<p class=\"has-large-font-size\">Fazit<\/p>\n\n\n\n<p>Mit diesen Schritten hast du ein einfaches und sicheres Kontaktformular in WordPress erstellt, das E-Mails an den Administrator sendet und dem Absender eine Best\u00e4tigungs-E-Mail zuschickt. Dies alles wird ohne die Verwendung von Plugins erreicht, und das Design des Formulars kann \u00fcber benutzerdefiniertes CSS angepasst werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Beitrag zeige ich, wie man ein einfaches und sicheres Kontaktformular in WordPress ohne die Verwendung eines Plugins erstellt. Wir verwenden ein HTML-Formular, PHP f\u00fcr die Formularverarbeitung und einige grundlegende CSS-Stile f\u00fcr die Darstellung des Formulars. 1. HTML-Kontaktformular Zuerst erstellen wir das HTML-Formular, das die Benutzereingaben sammelt und an die WordPress-Admin-Seite sendet. Hier ist [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":897,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-895","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/posts\/895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/comments?post=895"}],"version-history":[{"count":3,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/posts\/895\/revisions"}],"predecessor-version":[{"id":899,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/posts\/895\/revisions\/899"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/media\/897"}],"wp:attachment":[{"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/media?parent=895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/categories?post=895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ghanim-solution.de\/index.php\/wp-json\/wp\/v2\/tags?post=895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}