WordPress
Añade un formulario de Ikiform a WordPress con el bloque HTML personalizado, o registra un shortcode para que cualquier autor pueda colocar el mismo formulario en cualquier parte.
Los plugins de formularios gestionan los envíos dentro de WordPress: sus formularios envían de vuelta a tu propio sitio y el plugin guarda el resultado y lo manda por email. Un formulario HTML apuntado a Ikiform se salta el plugin, la base de datos y la configuración del correo, y sigue funcionando en páginas en caché porque no lleva nonce de WordPress.
Quién puede pegar un formulario
WordPress filtra el HTML de las entradas y páginas. Para quien no tenga la capacidad unfiltered_html, elimina <form> y <input> al guardar el contenido.
| Sitio | Quién puede guardar un formulario en un bloque HTML personalizado |
|---|---|
| Autoalojado, un solo sitio | Administradores y editores |
| Multisitio autoalojado | Solo superadministradores |
DISALLOW_UNFILTERED_HTML con el valor true en wp-config.php | Nadie. Usa el shortcode. |
| WordPress.com | Cualquiera que pueda editar, pero solo con un plan de pago con las funciones de hosting activadas. Las funciones de hosting se activan al instalar un plugin. En otros planes se eliminan las etiquetas. |
Bloque HTML personalizado
Añade el bloque
En el editor de bloques, escribe
/htmly elige HTML personalizado (Custom HTML). Para poner el formulario en todas las páginas, añade el bloque a una parte de plantilla, como el pie, en el editor del sitio.Pega el formulario
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-buttonle da al botón el estilo de botón de tu tema en los temas de bloques. El formulario hereda las fuentes y los estilos de inputs de tu tema, así que normalmente no necesita CSS.Previsualiza y actualiza
Usa la pestaña Vista previa del bloque y luego guarda. Recarga el editor y vuelve a abrir el bloque: si las etiquetas
<form>e<input>desaparecieron, tu cuenta no puede guardarlas. Usa el shortcode de abajo.
_redirect solo funciona cuando el formulario tiene dominios permitidos que incluyen tu sitio; si no, los visitantes ven la página de agradecimiento de Ikiform. También puedes configurar Redirect after submit en los ajustes del formulario y quitar el input oculto.
Un shortcode
Un shortcode mantiene el HTML en PHP, donde el filtro de contenido no lo toca, así que los autores y colaboradores también pueden colocar el formulario. Guárdalo como un plugin must-use, que WordPress carga automáticamente:
<?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();
});Después añade un bloque Shortcode, o escribe el shortcode en cualquier contenido:
[ikiform subject="New enquiry" redirect="https://example.com/thank-you/"]- Pasa
idpara usar otro formulario:[ikiform id="frm_..."]. - Cambia los campos en el PHP para que coincidan con tu formulario. Se guarda cada input con un
name. - En el editor clásico, pega el HTML solo en la pestaña Texto. El editor visual añade etiquetas
<p>y<br>dentro del formulario. El shortcode evita este problema.
Dominios permitidos
Incluye cada dirección en la que responde el sitio. Los sitios de WordPress suelen tener varias mientras los construyes.
| Dónde funciona el formulario | Añadir a Allowed domains |
|---|---|
| Tu dominio en producción | example.com, que también cubre www.example.com |
| Dirección de WordPress.com | your-site.wordpress.com, o your-site.wpcomstaging.com para sitios de staging |
| El sitio de staging de tu hosting | El host de staging que aparece en el panel de tu hosting |
| Desarrollo local | localhost, o el nombre de host local que te dé tu herramienta, como my-site.local |
- Nunca añadas
wordpress.comniwpcomstaging.comsolos. Coincidiría cualquier sitio de ese host, incluidos los de otras personas.
Lista de pruebas
- Cierra sesión o abre una ventana privada. Los administradores con sesión iniciada se saltan algunas cachés y ven una página ligeramente distinta.
- Envía el formulario y confirma el envío en Ikiform, como recibido y no como spam.
- Comprueba que llegas a tu página de agradecimiento. Si ves la página de Ikiform, falta el sitio en los dominios permitidos o la URL de
_redirectno eshttps:. - Edita la página con un usuario que no sea administrador y confirma que el formulario sobrevive al guardado, o usa el shortcode.
Solución de problemas
| Qué ves | Por qué | Solución |
|---|---|---|
| Los campos del formulario desaparecen al guardar y solo quedan las etiquetas | Tu cuenta no tiene unfiltered_html, o el plan de WordPress.com filtra form e input | Usa el shortcode, o pide a un administrador que pegue el bloque. |
Etiquetas <p> y <br> sueltas rompen el diseño | El modo visual del editor clásico reformateó el HTML | Usa un bloque HTML personalizado o el shortcode. |
La consola del navegador dice que se rechazaron los datos del formulario por la directiva form-action | Un plugin de seguridad o tu hosting envía una cabecera Content-Security-Policy | Añade https://ikiform.com a form-action, y a connect-src si envías con fetch. |
Los envíos llegan al filtro de spam con origin_mismatch | La página que envió no está entre los dominios permitidos del formulario | Añade el host de la tabla de arriba. Si eliges Reject, esos mismos envíos reciben 403 origin_not_allowed. |
422 validation_failed con un campo desconocido | El formulario tiene campos definidos y el nombre de un input no es ninguno de ellos | Cambia el nombre del input por el id del campo, o haz que empiece con _ si solo es una marca para ti. |