ID del formulario

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.

SitioQuién puede guardar un formulario en un bloque HTML personalizado
Autoalojado, un solo sitioAdministradores y editores
Multisitio autoalojadoSolo superadministradores
DISALLOW_UNFILTERED_HTML con el valor true en wp-config.phpNadie. Usa el shortcode.
WordPress.comCualquiera 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

  1. Añade el bloque

    En el editor de bloques, escribe /html y 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.

  2. 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-button le 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.

  3. 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:

wp-content/mu-plugins/ikiform.php
<?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:

Shortcode block
[ikiform subject="New enquiry" redirect="https://example.com/thank-you/"]
  • Pasa id para 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 formularioAñadir a Allowed domains
Tu dominio en producciónexample.com, que también cubre www.example.com
Dirección de WordPress.comyour-site.wordpress.com, o your-site.wpcomstaging.com para sitios de staging
El sitio de staging de tu hostingEl host de staging que aparece en el panel de tu hosting
Desarrollo locallocalhost, o el nombre de host local que te dé tu herramienta, como my-site.local
  • Nunca añadas wordpress.com ni wpcomstaging.com solos. Coincidiría cualquier sitio de ese host, incluidos los de otras personas.

Lista de pruebas

  1. 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.
  2. Envía el formulario y confirma el envío en Ikiform, como recibido y no como spam.
  3. 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 _redirect no es https:.
  4. 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é vesPor quéSolución
Los campos del formulario desaparecen al guardar y solo quedan las etiquetasTu cuenta no tiene unfiltered_html, o el plan de WordPress.com filtra form e inputUsa el shortcode, o pide a un administrador que pegue el bloque.
Etiquetas <p> y <br> sueltas rompen el diseñoEl modo visual del editor clásico reformateó el HTMLUsa un bloque HTML personalizado o el shortcode.
La consola del navegador dice que se rechazaron los datos del formulario por la directiva form-actionUn plugin de seguridad o tu hosting envía una cabecera Content-Security-PolicyAñ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_mismatchLa página que envió no está entre los dominios permitidos del formularioAñ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 desconocidoEl formulario tiene campos definidos y el nombre de un input no es ninguno de ellosCambia el nombre del input por el id del campo, o haz que empiece con _ si solo es una marca para ti.