Formulario de contacto 7 establecer valor de campo con solicitud de obtención

7 minutos de lectura

avatar de usuario
meneer venus

Quiero establecer un valor de campo con solicitud de obtención

ejemplo.com/subscribe/?email=asfafs

pero cuando cargo la página que tiene el formulario, el formulario no se muestra. Entiendo por qué no se puede mostrar. Porque el formulario en sí también podría enviar una solicitud de obtención. también instalé este complemento que debería permitirme establecer un valor de campo, pero no lo hace.

Esto es lo que tengo:

<p>Uw naam (verplicht)<br />
    [text* input-name] </p>

<p>Uw email (verplicht)<br />
    [dynamictext dynamicname "CF7_GET key='email'"] </p>
<p>Onderwerp<br />
    [text your-subject] </p>

<p>Uw bericht<br />
    [textarea your-message] </p>

<p>[submit "Verzenden"]</p>

En mi pagina:

<?php echo do_shortcode('[contact-form-7 id="1062" title="Contactformulier 1"]'); ?>

No me importaría usar un complemento diferente para esto. Si hay uno que se adapte a mis necesidades, por favor dígame.

  • puedes elaborar mas?

    – Ganesh Patil

    5 de junio de 2014 a las 12:51

  • Cambié un poco mi pregunta. Espero que sea más claro ahora.

    – Meneer Venus

    5 de junio de 2014 a las 12:56

  • puedes revisar este complemento, ¿puedes ayudar? wordpress.org/plugins/contact-form-7-dynamic-text-extension

    – Ganesh Patil

    5 de junio de 2014 a las 13:39

  • He descargado el complemento y ahora el formulario aún no se muestra cuando agrego una solicitud de obtención a la URL.

    – Meneer Venus

    5 de junio de 2014 a las 13:52

  • ¿Ha agregado correctamente el shortcode del formulario en su página?

    – Ganesh Patil

    5 de junio de 2014 a las 13:54

avatar de usuario
mehedi101

[text* your-name default:get]

El campo obtendrá su valor por defecto de la GET variable con el mismo nombre (“tu-nombre”). Intente esto accediendo a la URL de la página del formulario con una cadena de consulta adicional:

http://ejemplo.com/contacto/?tu-nombre=John+Smith

Pero, ¿qué sucede si tiene dos o más opciones predeterminadas en una sola etiqueta de formulario? Consideremos el caso de esta etiqueta de formulario:

[text* your-name default:get default:post_meta "Your Name"]

Acabo de instalar el complemento que vinculaste y lo probé. El complemento no está destinado a extraer una variable GET para un campo dentro del Formulario de contacto 7. El complemento hará dos cosas

  1. Tomará la variable $_GET y creará un campo oculto con ella.
  2. Mostrará la variable en la página (como texto, no en un campo)

El código abreviado que tiene en su ejemplo es para uso de este http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/ enchufar. También descargué y probé ese complemento, y parece funcionar bien.

Aquí está la página en la que creé el ejemplo. http://jtwebb.com/stackoverflow-pregunta/?someemail=asdf si desea echar un vistazo para ver si funciona con el complemento de extensión de texto dinámico.

ACTUALIZAR: Este es el código de mi formulario de contacto 7:

<p>Your Name (required)<br />
    [text* your-name] </p>

<p>[showparam someemail] <-- this is the shortcode of show param, just text no field</p>

<p>[getparam someemail] If you inspect this you'll see a hidden get field with the value of 'someemail' in it.</p>

<p>Your Email (required)<br />
    [dynamictext* dynamictext-380 "CF7_GET key='someemail'"]<br>This field was created with <a href="http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/">http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/</a></p>

<p>Subject<br />
    [text your-subject] </p>

<p>Your Message<br />
    [textarea your-message] </p>

<p>[submit "Send"]</p>

  • Gracias. Me di cuenta de esto yo mismo. Solo tuve que modificar un poco el código del complemento de extensión de texto dinámico.

    – Meneer Venus

    5 de junio de 2014 a las 14:57

Inicialmente, en el campo de formulario, puede establecer un texto único y luego usar el gancho para reemplazarlo con el valor deseado. Y entonces no se necesitará ningún complemento.

Ejemplo. En código de formulario:

<p>Phone<br />
[text phone "PHONE_VALUE"] </p>

en funciones.php:

add_filter( 'wpcf7_form_elements', function( $form ) {
  $form = str_replace( 'PHONE_VALUE', $_GET['phone'], $form );
  return $form;
} );

en URL:

example.com/page?phone=111111

avatar de usuario
Javacadabra

Sé que esta pregunta ya ha sido respondida, pero para cualquiera que busque una solución que no requiera un complemento, opté por hacer lo siguiente.

Primero, creé mi formulario desde el complemento a través del panel de WordPress. Agregué el campo en el que quería contener el parámetro de la URL y le asigné una ID.

[text page-name class:form-control id:source minlength:2 maxlength:80]

Luego agregué un enlace que pasaría el parámetro al formulario así

<a href="http://mycoolwebsite.com/contact?id=homepage">Contact Us</a>

Luego usando algunos Javascript y JQuery consigo el id parámetro de la URL y configurarlo como el valor de mi entrada en el formulario. (Los getParameterByName(name,url) La función se tomó de esta respuesta: ¿Cómo puedo obtener valores de cadena de consulta en JavaScript?)

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    url = url.toLowerCase(); 
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var param = getParameterByName('id');
jQuery('#source').hide();
jQuery('#source').prop('disabled', true);
jQuery('#source').attr('value', param);
jQuery('#source').val(param);

También oculto y deshabilito el campo de entrada para que no se vea y no se pueda modificar (fácilmente). También oculto el campo de entrada usando CSS

#source{visibility:hidden}

De esta manera, puedo vincular el formulario desde cualquier lugar dentro de mi sitio y agregar la fuente de donde vino la persona y colocarla en el correo electrónico que recibo.

No veo ningún problema con este método y elimina la necesidad de usar un complemento. Estoy seguro de que no es ideal depender de Javascript, pero tampoco es ideal usar muchos complementos en su sitio, ya que pueden quedar obsoletos muy rápidamente y, a menudo, pueden causar conflictos entre ellos.

Espero que esto ayude a cualquiera que busque una alternativa. Me gustaría conocer las opiniones de la gente sobre esta forma, ya que estoy abierto a sugerencias sobre cómo mejorarla.

según esto artículo

si desea enviar un valor a una lista de selección, puede hacerlo fácilmente agregando el parámetro default:get al código de campo:

[select* the-recipient default:get "Employee One|[email protected]" "Employee Two|[email protected]" "Employee Three|[email protected]"]

y luego envíe el parámetro en la solicitud GET, como:

http://yourdomain.com/contact/?the-recipient=Employee%20Two

avatar de usuario
Nicolás R.

Si tiene alguna lógica específica para cada elemento del formulario, también puede usar el wpcf7_form_tag gancho

// define the wpcf7_form_tag callback
function filter_wpcf7_form_tag( $scanned_tag, $replace ) {

    // set default option for your field
    if($scanned_tag['name'] == 'my-field' && isset($_GET['my-param'])){
        $scanned_tag['options'][] = sprintf('default:%s', $_GET['my-param']);
    }

    // repeat operation for another field

    return $scanned_tag;
};

// add the filter
add_filter( 'wpcf7_form_tag', 'filter_wpcf7_form_tag', 10, 2 );

En mi caso [default:get] no estaba funcionando, por lo tanto, seguí los siguientes pasos

  1. [text* package id:package readonly ] for url = “http://www.example.se/package-quote/?package=Basic”
  2. Escriba el script jquery en footer.php

http://toihid.com/contact-form-7-set-field-value-with-get-request/

¿Ha sido útil esta solución?