Cómo obtener la URL actual en Contact Form 7

22 ene 2018, 21:52:23
Vistas: 66K
Votos: 6

Estoy usando Contact Form 7 en mi instalación de WordPress. Necesito de alguna manera pasar un campo oculto con la URL de la página actual en un campo oculto del formulario de contacto. He intentado usar su función personalizada y probé el shortcode, sin éxito.

wpcf7_add_shortcode('sourceurl', 'wpcf7_sourceurl_shortcode_handler', true);

function wpcf7_sourceurl_shortcode_handler($tag) {
    // Si el tag no es un array, retornar cadena vacía
    if (!is_array($tag)) return '';

    $name = $tag['name'];
    // Si el nombre está vacío, retornar cadena vacía
    if (empty($name)) return '';

    $html = '<input type="hidden" name="' . $name . '" value="http://' . $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] . '" />';
    return $html;
}

En la edición del formulario intenté [sourceurl thesource]

0
Todas las respuestas a la pregunta 4
1

Mira este ejemplo sobre cómo crear y analizar el shortcode en el formulario de contacto 7 para usarlo, añade [current_url]

add_action( 'wpcf7_init', 'wpcf7_add_form_tag_current_url' );
function wpcf7_add_form_tag_current_url() {
    // Añadir shortcode para el formulario [current_url]
    wpcf7_add_form_tag( 'current_url',
        'wpcf7_current_url_form_tag_handler',
        array(
            'name-attr' => true
        )
    );
}

// Analizar el shortcode en el frontend
function wpcf7_current_url_form_tag_handler( $tag ) {
    global $wp;
    $url = home_url( $wp->request );
    return '<input type="hidden" name="'.$tag['name'].'" value="'.$url.'" />';
}

Además, si solo se trata de obtener la URL en el correo electrónico, no necesitas todo esto. Hay una etiqueta especial para el correo [_url] Etiquetas especiales de correo de CF7

22 ene 2018 23:18:57
Comentarios

Funciona para mí si reemplazo $tag['name'] con $tag['type']:

return '<input type="hidden" name="'.$tag['type'].'" value="'.$url.'" />';

userlond userlond
25 mar 2022 09:53:47
1

según la documentación de Contact Form 7 necesitas esto:

[_url] — Esta etiqueta es reemplazada por la URL de la página en la que se encuentra el formulario de contacto.

referencia: https://contactform7.com/special-mail-tags/

2 jun 2021 16:53:07
Comentarios

+1 por el sentido común de leer la documentación :)

Robert Went Robert Went
8 jul 2021 15:57:13
0

Puedes usar los shortcodes de campos ocultos de cf7 + parámetros get: https://contactform7.com/hidden-field/ https://contactform7.com/getting-default-values-from-the-context/

En el formulario de correo utilizo estos shortcodes para obtener los slugs

[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_campaign default:get]
[hidden utm_content default:get]
[hidden gclid default:get]

También funciona con su plugin flamingo. Y para la plantilla de correo [_url] funciona muy bien.

27 sept 2018 00:55:01
0

el envío del formulario ya incluye el post contenedor, así que solo necesitas recuperarlo y añadirlo al correo.
Para ello, prueba este código:

add_filter("wpcf7_posted_data", function ($wpcf7_posted_data) {

    $post = get_post($wpcf7_posted_data["_wpcf7_container_post"]);

    $wpcf7_posted_data["containerURL"] = get_permalink($post);


    return $wpcf7_posted_data;

});

Y en la edición del correo enviado, recuperas la URL con [containerURL]

22 ene 2018 22:52:19