WordPress
Füge ein Ikiform-Formular mit dem Custom-HTML-Block zu WordPress hinzu oder registriere einen Shortcode, damit jeder Autor dasselbe Formular überall platzieren kann.
Formular-Plugins verarbeiten Einsendungen innerhalb von WordPress: Ihre Formulare senden an deine eigene Site zurück, und das Plugin speichert das Ergebnis und verschickt es per E-Mail. Ein einfaches HTML-Formular, das auf Ikiform zeigt, umgeht Plugin, Datenbank und Mail-Setup und funktioniert auch auf gecachten Seiten, weil es keine WordPress-Nonce enthält.
Wer ein Formular einfügen kann
WordPress filtert das HTML in Beiträgen und Seiten. Bei allen ohne die Berechtigung unfiltered_html entfernt es <form> und <input> beim Speichern des Inhalts.
| Site | Wer ein Formular in einem Custom-HTML-Block speichern kann |
|---|---|
| Selbst gehostet, einzelne Site | Administratoren und Redakteure |
| Selbst gehostete Multisite | Nur Super-Admins |
DISALLOW_UNFILTERED_HTML auf true gesetzt in wp-config.php | Niemand. Nutze den Shortcode. |
| WordPress.com | Alle, die bearbeiten dürfen, aber nur mit einem kostenpflichtigen Tarif und aktivierten Hosting-Funktionen. Die Hosting-Funktionen werden aktiviert, wenn du ein Plugin installierst. Bei anderen Tarifen werden die Tags entfernt. |
Custom-HTML-Block
Block hinzufügen
Tippe im Block-Editor
/htmlund wähle Custom HTML. Um das Formular auf jeder Seite anzuzeigen, füge den Block stattdessen im Site Editor einem Template-Teil wie dem Footer hinzu.Formular einfügen
Custom HTML <form class="ikiform" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post"> <p><label>Name <input name="name" autocomplete="name" required></label></p> <p><label>Email <input name="email" type="email" autocomplete="email" required></label></p> <p><label>Message <textarea name="message" rows="5"></textarea></label></p> <input type="hidden" name="_redirect" value="https://example.com/thank-you/"> <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden> <p><button type="submit" class="wp-element-button">Send</button></p> </form>wp-element-buttongibt dem Button in Block-Themes den Button-Stil deines Themes. Das Formular übernimmt die Schriften und Input-Styles deines Themes und braucht daher meist kein CSS.Vorschau ansehen, dann aktualisieren
Nutze den Tab Preview des Blocks und speichere dann. Lade den Editor neu und öffne den Block erneut: Wenn die Tags
<form>und<input>verschwunden sind, kann dein Konto sie nicht speichern. Nutze dann den Shortcode unten.
_redirect funktioniert nur, wenn das Formular erlaubte Domains hat, die deine Site enthalten; sonst sehen Besucher die Danke-Seite von Ikiform. Du kannst auch Redirect after submit in den Einstellungen des Formulars setzen und das versteckte Input weglassen.
Ein Shortcode
Ein Shortcode hält das HTML in PHP, wo der Inhaltsfilter es nicht anfasst, sodass auch Autoren und Mitarbeiter das Formular platzieren können. Speichere das als Must-Use-Plugin, das WordPress automatisch lädt:
<?php
add_shortcode('ikiform', function ($atts) {
$atts = shortcode_atts([
'id' => 'frm_xxxxxxxxxxxxxxxx',
'subject' => '',
'redirect' => '',
'button' => 'Send',
], $atts, 'ikiform');
ob_start();
?>
<form class="ikiform" action="<?php echo esc_url('https://ikiform.com/f/' . rawurlencode($atts['id'])); ?>" method="post">
<p><label>Email <input name="email" type="email" autocomplete="email" required></label></p>
<p><label>Message <textarea name="message" rows="5"></textarea></label></p>
<?php if ($atts['subject']) : ?>
<input type="hidden" name="_subject" value="<?php echo esc_attr($atts['subject']); ?>">
<?php endif; ?>
<?php if ($atts['redirect']) : ?>
<input type="hidden" name="_redirect" value="<?php echo esc_url($atts['redirect']); ?>">
<?php endif; ?>
<input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
<p><button type="submit" class="wp-element-button"><?php echo esc_html($atts['button']); ?></button></p>
</form>
<?php
return ob_get_clean();
});Füge dann einen Shortcode-Block hinzu oder tippe den Shortcode in einen beliebigen Inhalt:
[ikiform subject="New enquiry" redirect="https://example.com/thank-you/"]- Übergib
id, um ein anderes Formular zu verwenden:[ikiform id="frm_..."]. - Passe die Felder im PHP an dein Formular an. Jedes Input mit einem
namewird gespeichert. - Füge im klassischen Editor rohes HTML nur im Tab Text ein. Der visuelle Editor fügt
<p>- und<br>-Tags in das Formular ein. Der Shortcode vermeidet das.
Erlaubte Domains
Liste jede Adresse auf, unter der die Site erreichbar ist. WordPress-Sites haben während des Aufbaus oft mehrere.
| Wo das Formular läuft | Zu Allowed domains hinzufügen |
|---|---|
| Deine Live-Domain | example.com, was auch www.example.com abdeckt |
| WordPress.com-Adresse | your-site.wordpress.com oder your-site.wpcomstaging.com für Staging-Sites |
| Die Staging-Site deines Hosters | Der Staging-Host aus dem Dashboard deines Hosters |
| Lokale Entwicklung | localhost oder der lokale Hostname, den dein Tool dir gibt, etwa my-site.local |
- Füge niemals
wordpress.comoderwpcomstaging.comallein hinzu. Jede Site auf diesem Host würde passen, auch die anderer Leute.
Test-Checkliste
- Melde dich ab oder öffne ein privates Fenster. Angemeldete Admins umgehen einige Caches und sehen eine leicht andere Seite.
- Sende das Formular ab und prüfe, dass die Einsendung in Ikiform unter Empfangen statt unter Spam steht.
- Prüfe, dass du auf deiner Danke-Seite landest. Siehst du die Seite von Ikiform, fehlt die Site in den erlaubten Domains oder die
_redirect-URL ist nichthttps:. - Bearbeite die Seite als Nutzer ohne Admin-Rechte und prüfe, dass das Formular ein Speichern übersteht, oder nutze den Shortcode.
Fehlerbehebung
| Was du siehst | Warum | Lösung |
|---|---|---|
| Die Formularfelder verschwinden nach dem Speichern, nur die Labels bleiben | Deinem Konto fehlt unfiltered_html, oder der WordPress.com-Tarif filtert form und input | Nutze den Shortcode oder lass einen Administrator den Block einfügen. |
Überzählige <p>- und <br>-Tags zerstören das Layout | Der visuelle Modus des klassischen Editors hat das HTML umformatiert | Nutze einen Custom-HTML-Block oder den Shortcode. |
Die Browserkonsole meldet, dass die Formulardaten wegen der Direktive form-action abgelehnt wurden | Ein Sicherheits-Plugin oder dein Hoster sendet einen Content-Security-Policy-Header | Füge https://ikiform.com zu form-action hinzu und zu connect-src, wenn du mit fetch sendest. |
Einsendungen landen im Spamfilter mit origin_mismatch | Die sendende Seite steht nicht in den erlaubten Domains des Formulars | Füge den Host aus der Tabelle oben hinzu. Mit Reject bekommen dieselben Requests stattdessen 403 origin_not_allowed. |
422 validation_failed mit einem Unknown field | Das Formular hat definierte Felder, und ein Input-Name gehört nicht dazu | Benenne das Input in die Feld-ID um oder lass es mit _ beginnen, wenn es nur eine Markierung für dich ist. |